JdbcFetchDirection.java

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

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.sql.ResultSet;

@Retention(RetentionPolicy.CLASS)
@Target({ElementType.TYPE, ElementType.METHOD, ElementType.PARAMETER})
public @interface JdbcFetchDirection {
    enum Kind {
        UNSPECIFIED(0),
        FETCH_FORWARD(ResultSet.FETCH_FORWARD),
        FETCH_REVERSE(ResultSet.FETCH_REVERSE),
        FETCH_UNKNOWN(ResultSet.FETCH_UNKNOWN);

        private final int sqlMagicNumber;

        Kind(int sqlMagicNumber) {
            this.sqlMagicNumber = sqlMagicNumber;
        }

        public int sqlMagicNumber() {
            // sanity-check:on
            if (this == UNSPECIFIED) {
                throw new RuntimeException();
            }
            // sanity-check:off
            return sqlMagicNumber;
        }

    }

    Kind value() default Kind.UNSPECIFIED;
}