Java2JdbcConverter.java

/*
 * SPDX-FileCopyrightText: 2025 kaumei.io
 * SPDX-License-Identifier: Apache-2.0
 */
package io.kaumei.jdbc.anno.java2jdbc;

import com.palantir.javapoet.CodeBlock;
import io.kaumei.jdbc.anno.gen.TargetMethod;
import io.kaumei.jdbc.anno.model.OptionalFlag;
import io.kaumei.jdbc.anno.store.Converter;
import io.kaumei.jdbc.anno.store.ConverterBasis;
import io.kaumei.jdbc.anno.store.SearchKey;
import io.kaumei.jdbc.anno.store.SourceDV;

import javax.lang.model.type.TypeMirror;
import java.util.Set;

public sealed class Java2JdbcConverter extends ConverterBasis
        permits ConverterEnum, ConverterJdbcStatement, ConverterObjectSimple, ConverterRecord, ConverterStaticSimple, ConverterStaticStatement {

    interface Placeholder extends Converter.Placeholder {
        SearchKey otherPlaceholder();

        Java2JdbcConverter resolve(Java2JdbcConverter converter);

        default Set<SearchKey> otherPlaceholders() {
            return Set.of(otherPlaceholder());
        }
    }

    // ------------------------------------------------------------------------

    protected Java2JdbcConverter(TypeMirror type, SourceDV source) {
        super(type, source);
    }

    // ------------------------------------------------------------------------

    public void setParameter(TargetMethod builder, CodeBlock paramAccess, CodeBlock columnIndex, OptionalFlag optional) {
        throw new UnsupportedOperationException("Converter:" + this); // sanity-check
    }

}