@gftdcojp/gftd-orm
Version:
Enterprise-grade real-time data platform with ksqlDB, inspired by Supabase architecture
73 lines • 2.3 kB
TypeScript
/**
* FieldType 定義 - Drizzle ORM ライクな DSL
*/
export interface FieldDefinition {
type: string;
nullable: boolean;
primaryKey: boolean;
default?: any;
logicalType?: string;
}
export declare class BaseFieldType {
protected definition: FieldDefinition;
constructor(type: string, logicalType?: string);
notNull(): this;
primaryKey(): this;
withDefault(defaultValue: any): this;
getDefinition(): FieldDefinition;
toAvroType(): string | string[] | any;
}
export declare class StringFieldType extends BaseFieldType {
constructor();
}
export declare class IntFieldType extends BaseFieldType {
constructor();
}
export declare class LongFieldType extends BaseFieldType {
constructor();
}
export declare class DoubleFieldType extends BaseFieldType {
constructor();
}
export declare class BooleanFieldType extends BaseFieldType {
constructor();
}
export declare class UuidFieldType extends BaseFieldType {
constructor();
}
export declare class TimestampFieldType extends BaseFieldType {
constructor();
}
export declare class DateFieldType extends BaseFieldType {
constructor();
}
export declare class TimeFieldType extends BaseFieldType {
constructor();
}
export declare class DecimalFieldType extends BaseFieldType {
constructor(precision?: number, scale?: number);
}
export declare class ArrayFieldType extends BaseFieldType {
constructor(itemType: BaseFieldType);
}
export declare class MapFieldType extends BaseFieldType {
constructor(valueType: BaseFieldType);
}
/**
* FieldType エクスポート - 設計案の通り(各フィールドは新しいインスタンスを返す)
*/
export declare const FieldType: {
readonly STRING: StringFieldType;
readonly INT: IntFieldType;
readonly LONG: LongFieldType;
readonly DOUBLE: DoubleFieldType;
readonly BOOLEAN: BooleanFieldType;
readonly UUID: UuidFieldType;
readonly TIMESTAMP: TimestampFieldType;
readonly DATE: DateFieldType;
readonly TIME: TimeFieldType;
readonly DECIMAL: (precision?: number, scale?: number) => DecimalFieldType;
readonly ARRAY: (itemType: BaseFieldType) => ArrayFieldType;
readonly MAP: (valueType: BaseFieldType) => MapFieldType;
};
//# sourceMappingURL=field-types.d.ts.map