Skip to content

Commit f0031ad

Browse files
feat: support uuid type
1 parent dc8fc4e commit f0031ad

File tree

2 files changed

+39
-1
lines changed

2 files changed

+39
-1
lines changed

jooq-dialect/src/main/java/tech/ydb/jooq/YdbTypes.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ public static DataType<BigDecimal> DECIMAL(int precision, int scale) {
5252
public static final DataType<org.jooq.JSON> JSON = newDataType(SQLDataType.JSON, "json", new JsonBinding());
5353
public static final DataType<org.jooq.JSONB> JSONDOCUMENT = newDataType(SQLDataType.JSONB, "jsondocument", new JsonDocumentBinding());
5454
public static final DataType<YSON> YSON = newDataType(SQLDataType.OTHER, "yson", new YsonBinding());
55-
public static final DataType<java.util.UUID> UUID = newDataType(SQLDataType.UUID, "uuid");
55+
public static final DataType<java.util.UUID> UUID = newDataType(SQLDataType.UUID, "uuid", new UuidBinding());
5656

5757
public static final DataType<LocalDate> DATE = newDataType(SQLDataType.LOCALDATE, "date", new DateBinding());
5858
public static final DataType<LocalDateTime> DATETIME = newDataType(SQLDataType.LOCALDATETIME, "datetime", new DatetimeBinding());
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package tech.ydb.jooq.binding;
2+
3+
import java.sql.SQLException;
4+
import java.util.UUID;
5+
import org.jooq.BindingGetResultSetContext;
6+
import org.jooq.BindingSetStatementContext;
7+
import org.jooq.Converter;
8+
import org.jooq.impl.AbstractBinding;
9+
import org.jooq.impl.IdentityConverter;
10+
import static tech.ydb.jooq.binding.BindingTools.indexType;
11+
import tech.ydb.table.values.PrimitiveType;
12+
13+
/**
14+
* @author Kirill Kurdyukov
15+
*/
16+
public class UuidBinding extends AbstractBinding<UUID, UUID> {
17+
18+
private static final int INDEX_TYPE = indexType(PrimitiveType.Uuid);
19+
20+
@Override
21+
public Converter<UUID, UUID> converter() {
22+
return new IdentityConverter<>(UUID.class);
23+
}
24+
25+
@Override
26+
public void set(BindingSetStatementContext<UUID> ctx) throws SQLException {
27+
if (ctx.value() == null) {
28+
ctx.statement().setNull(ctx.index(), INDEX_TYPE);
29+
} else {
30+
ctx.statement().setObject(ctx.index(), ctx.value(), INDEX_TYPE);
31+
}
32+
}
33+
34+
@Override
35+
public void get(BindingGetResultSetContext<UUID> ctx) throws SQLException {
36+
ctx.value((UUID) ctx.resultSet().getObject(ctx.index()));
37+
}
38+
}

0 commit comments

Comments
 (0)