UNPKG

@gftdcojp/gftd-orm

Version:

Enterprise-grade real-time data platform with ksqlDB, inspired by Supabase architecture

63 lines 1.66 kB
"use strict"; /** * Schema 定義層 - defineSchema() で TypeScript 型→Avro Schema 生成&登録 */ Object.defineProperty(exports, "__esModule", { value: true }); exports.defineSchema = defineSchema; exports.getSchema = getSchema; exports.getAllSchemas = getAllSchemas; exports.clearSchemaRegistry = clearSchemaRegistry; /** * スキーマ定義のレジストリ */ const schemaRegistry = new Map(); /** * スキーマ定義関数 - 設計案の通り */ function defineSchema(name, fields) { // Avro Schema を生成 const avroFields = Object.entries(fields).map(([fieldName, fieldType]) => { const definition = fieldType.getDefinition(); const avroField = { name: fieldName, type: fieldType.toAvroType(), }; // デフォルト値があれば追加 if (definition.default !== undefined) { avroField.default = definition.default; } return avroField; }); const avroSchema = { type: 'record', name, fields: avroFields, }; const schemaDefinition = { name, fields, avroSchema, }; // レジストリに登録 schemaRegistry.set(name, schemaDefinition); return schemaDefinition; } /** * 登録済みスキーマを取得 */ function getSchema(name) { return schemaRegistry.get(name); } /** * 全スキーマを取得 */ function getAllSchemas() { return Array.from(schemaRegistry.values()); } /** * スキーマレジストリをクリア(テスト用) */ function clearSchemaRegistry() { schemaRegistry.clear(); } //# sourceMappingURL=schema.js.map