@syntropix/database 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/client.ts","../src/core/config.ts","../src/types/filter.ts","../src/core/data-client.ts","../src/core/table-client.ts","../src/core/syntropix.ts","../src/types/common.ts","../src/types/data-type.ts","../src/types/field.ts","../src/types/basemodel.ts","../src/types/requests.ts"],"names":["Client","config","headers","Authorization","apiKey","url","path","startsWith","slice","baseUrl","get","data","response","axios","params","status","Error","statusText","post","ClientConfig","timeout","retries","process","env","SYNTROPIX_API_KEY","SYNTROPIX_API_URL","SYNTROPIX_API_TIMEOUT","SYNTROPIX_API_RETRIES","endsWith","SortType","FilterOperation","AND","conditions","OR","EQ","field","value","column","operator","staticValue","NE","GT","GTE","LT","LTE","IN","values","CONTAINS","OVERLAP","I_LIKE","pattern","NOT_I_LIKE","NOT_IN","LIKE","NOT_LIKE","IS_NULL","IS_NOT_NULL","BETWEEN","min","max","EQ_COL","otherField","columnValue","NE_COL","GT_COL","GTE_COL","LT_COL","LTE_COL","SIMILARITY","options","simiarityOptions","SIMILARITY_DISTANCE","WORD_SIMILARITY","WORD_SIMILARITY_DISTANCE","STRICT_WORD_SIMILARITY","STRICT_WORD_SIMILARITY_DISTANCE","EUCLIDEAN_DISTANCE","NEGATIVE_INNER_PRODUCT","COSINE_DISTANCE","Value","FilterWrapper","filter","undefined","Array","isArray","every","item","DataClient","client","insertData","message","insertOne","updateByPrimaryKey","pk","queryOne","model","query","One","responseData","queryMany","Many","map","updateData","deleteData","TableClient","createTable","dropTable","renameTable","truncateTable","addColumn","dropColumn","modifyColumn","getTableSchema","getTableList","SyntropixClient","_tableClient","_dataClient","table","ForeignKeyAction","AggregateFunction","ColumnDataType","Integer","String","maxLength","Text","Boolean","DateTime","Timestamp","Date","Json","Uuid","Double","Vector","dimensions","dataType","Enum","name","variants","Money","precision","scale","Decimal","Field","description","columnType","isPrimaryKey","isNullable","autoIncrement","default","defaultAccess","toLowerCase","into","ForeignKeyField","tableName","columnName","onDelete","onUpdate","Cascade","StringField","TextField","IntegerField","BooleanField","DateTimeField","TimestampField","DateField","JsonField","UuidField","VectorField","ArrayField","EnumField","MoneyField","DecimalField","DoubleField","FIELDS_KEY","Symbol","TABLE_NAME_KEY","DESCRIPTION_KEY","INDEXES_KEY","Column","target","propertyKey","fields","Reflect","getMetadata","fieldName","type","primary","nullable","defineMetadata","ForeignKey","BaseModel","_client","_extra","getFields","columnToPropertyMap","propertyName","Object","entries","key","getTableName","getDescription","metadataDescription","getIndexes","hasPrimaryKey","getPrimaryKeyName","getAssociations","f","getPrimaryKey","columns","foreignKeys","fromTableName","fromColumnName","toTableName","toColumnName","indexes","newName","newTableName","create","push","save","pkValue","payload","remove","finalFilter","bulkCreate","datas","batchSize","length","cnt","Math","keys","columnsSet","Set","col","size","c","update","delete","select","limit","sort","aggregate","join","offset","groupBy","count","function","Count","alias","toString","JSON","stringify","toJSON","SyntropixDBAccessType","None","Read","Write","Admin"],"mappings":"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","file":"index.cjs","sourcesContent":["import { ClientConfig } from '@/core/config';\nimport axios from 'axios';\n\nexport class Client {\n protected config: ClientConfig;\n\n constructor(config: ClientConfig) {\n this.config = config;\n }\n\n private headers() {\n return {\n 'Content-Type': 'application/json',\n Authorization: this.config.apiKey || '',\n };\n }\n\n private url(path: string) {\n if (path.startsWith('/')) {\n path = path.slice(1);\n }\n return `${this.config.baseUrl}${path}`;\n }\n\n public async get(path: string, data: Record<string, any> = {}): Promise<Record<string, any>> {\n const response = await axios.get(this.url(path), {\n headers: this.headers(),\n params: data,\n });\n if (response.status !== 200) {\n throw new Error(`Failed to get data: ${response.statusText}`);\n }\n return response.data;\n }\n\n public async post(path: string, data: Record<string, any> = {}): Promise<Record<string, any>> {\n const response = await axios.post(this.url(path), data, {\n headers: this.headers(),\n });\n if (response.status !== 200) {\n throw new Error(`Failed to post data: ${response.statusText}`);\n }\n return response.data;\n }\n}\n","export class ClientConfig {\n public apiKey?: string;\n public baseUrl?: string;\n public timeout?: number;\n public retries?: number;\n\n constructor(config?: any) {\n this.apiKey = config?.apiKey || process.env.SYNTROPIX_API_KEY;\n this.baseUrl = config?.baseUrl || process.env.SYNTROPIX_API_URL;\n this.timeout = config?.timeout || process.env.SYNTROPIX_API_TIMEOUT;\n this.retries = config?.retries || process.env.SYNTROPIX_API_RETRIES;\n\n if (!this.apiKey || !this.baseUrl) {\n throw new Error('API key and base URL are required');\n }\n\n if (!this.timeout) {\n this.timeout = 10000;\n }\n\n if (!this.retries) {\n this.retries = 3;\n }\n\n if (!this.baseUrl.endsWith('/')) {\n this.baseUrl += '/';\n }\n }\n}\n","// Filter types for database queries\nexport enum SortType {\n Descending = 'Descending',\n Ascending = 'Ascending',\n}\n\nexport interface SimilarityOptions {\n threshold: number;\n order?: SortType;\n alias?: string;\n}\n\nexport enum FilterOperation {\n LT = 'LT',\n LTE = 'LTE',\n GT = 'GT',\n GTE = 'GTE',\n EQ = 'EQ',\n NEQ = 'NEQ',\n Between = 'Between',\n In = 'In',\n Contains = 'Contains',\n Overlap = 'Overlap',\n NotIn = 'NotIn',\n Like = 'Like',\n NotLike = 'NotLike',\n ILike = 'ILike',\n NotILike = 'NotILike',\n IsNull = 'IsNull',\n IsNotNull = 'IsNotNull',\n Similarity = 'Similarity',\n SimilarityDistance = 'SimilarityDistance',\n WordSimilarity = 'WordSimilarity',\n WordSimilarityDistance = 'WordSimilarityDistance',\n StrictWordSimilarity = 'StrictWordSimilarity',\n StrictWordSimilarityDistance = 'StrictWordSimilarityDistance',\n EuclideanDistance = 'EuclideanDistance',\n NegativeInnerProduct = 'NegativeInnerProduct',\n CosineDistance = 'CosineDistance',\n}\n\nexport interface FilterItem {\n column: string;\n operator: FilterOperation;\n staticValue?: any;\n columnValue?: string;\n simiarityOptions?: SimilarityOptions;\n}\n\nexport type FilterGroup = FilterItem[];\n\nexport type Filter = FilterGroup[];\n\n// Filter builder functions\nexport const AND = (...conditions: FilterItem[]): FilterGroup => conditions;\n\nexport const OR = (...conditions: FilterGroup[]): Filter => conditions;\n\nexport const EQ = (field: string, value: any): FilterItem => ({\n column: field,\n operator: FilterOperation.EQ,\n staticValue: value,\n});\n\nexport const NE = (field: string, value: any): FilterItem => ({\n column: field,\n operator: FilterOperation.NEQ,\n staticValue: value,\n});\n\nexport const GT = (field: string, value: any): FilterItem => ({\n column: field,\n operator: FilterOperation.GT,\n staticValue: value,\n});\n\nexport const GTE = (field: string, value: any): FilterItem => ({\n column: field,\n operator: FilterOperation.GTE,\n staticValue: value,\n});\n\nexport const LT = (field: string, value: any): FilterItem => ({\n column: field,\n operator: FilterOperation.LT,\n staticValue: value,\n});\n\nexport const LTE = (field: string, value: any): FilterItem => ({\n column: field,\n operator: FilterOperation.LTE,\n staticValue: value,\n});\n\nexport const IN = (field: string, values: any[]): FilterItem => ({\n column: field,\n operator: FilterOperation.In,\n staticValue: values,\n});\n\nexport const CONTAINS = (field: string, value: any): FilterItem => ({\n column: field,\n operator: FilterOperation.Contains,\n staticValue: value,\n});\n\nexport const OVERLAP = (field: string, value: any): FilterItem => ({\n column: field,\n operator: FilterOperation.Overlap,\n staticValue: value,\n});\n\nexport const I_LIKE = (field: string, pattern: string): FilterItem => ({\n column: field,\n operator: FilterOperation.ILike,\n staticValue: pattern,\n});\n\nexport const NOT_I_LIKE = (field: string, pattern: string): FilterItem => ({\n column: field,\n operator: FilterOperation.NotILike,\n staticValue: pattern,\n});\n\nexport const NOT_IN = (field: string, values: any[]): FilterItem => ({\n column: field,\n operator: FilterOperation.NotIn,\n staticValue: values,\n});\n\nexport const LIKE = (field: string, pattern: string): FilterItem => ({\n column: field,\n operator: FilterOperation.Like,\n staticValue: pattern,\n});\n\nexport const NOT_LIKE = (field: string, pattern: string): FilterItem => ({\n column: field,\n operator: FilterOperation.NotLike,\n staticValue: pattern,\n});\n\nexport const IS_NULL = (field: string): FilterItem => ({\n column: field,\n operator: FilterOperation.IsNull,\n});\n\nexport const IS_NOT_NULL = (field: string): FilterItem => ({\n column: field,\n operator: FilterOperation.IsNotNull,\n});\n\nexport const BETWEEN = (field: string, min: any, max: any): FilterItem => ({\n column: field,\n operator: FilterOperation.Between,\n staticValue: [min, max],\n});\n\n// Column comparison (compare two columns)\nexport const EQ_COL = (field: string, otherField: string): FilterItem => ({\n column: field,\n operator: FilterOperation.EQ,\n columnValue: otherField,\n});\n\nexport const NE_COL = (field: string, otherField: string): FilterItem => ({\n column: field,\n operator: FilterOperation.NEQ,\n columnValue: otherField,\n});\n\nexport const GT_COL = (field: string, otherField: string): FilterItem => ({\n column: field,\n operator: FilterOperation.GT,\n columnValue: otherField,\n});\n\nexport const GTE_COL = (field: string, otherField: string): FilterItem => ({\n column: field,\n operator: FilterOperation.GTE,\n columnValue: otherField,\n});\n\nexport const LT_COL = (field: string, otherField: string): FilterItem => ({\n column: field,\n operator: FilterOperation.LT,\n columnValue: otherField,\n});\n\nexport const LTE_COL = (field: string, otherField: string): FilterItem => ({\n column: field,\n operator: FilterOperation.LTE,\n columnValue: otherField,\n});\n\n// Similarity operations\nexport const SIMILARITY = (field: string, value: any, options: SimilarityOptions): FilterItem => ({\n column: field,\n operator: FilterOperation.Similarity,\n staticValue: value,\n simiarityOptions: options,\n});\n\nexport const SIMILARITY_DISTANCE = (field: string, value: any, options: SimilarityOptions): FilterItem => ({\n column: field,\n operator: FilterOperation.SimilarityDistance,\n staticValue: value,\n simiarityOptions: options,\n});\n\nexport const WORD_SIMILARITY = (field: string, value: any, options: SimilarityOptions): FilterItem => ({\n column: field,\n operator: FilterOperation.WordSimilarity,\n staticValue: value,\n simiarityOptions: options,\n});\n\nexport const WORD_SIMILARITY_DISTANCE = (field: string, value: any, options: SimilarityOptions): FilterItem => ({\n column: field,\n operator: FilterOperation.WordSimilarityDistance,\n staticValue: value,\n simiarityOptions: options,\n});\n\nexport const STRICT_WORD_SIMILARITY = (field: string, value: any, options: SimilarityOptions): FilterItem => ({\n column: field,\n operator: FilterOperation.StrictWordSimilarity,\n staticValue: value,\n simiarityOptions: options,\n});\n\nexport const STRICT_WORD_SIMILARITY_DISTANCE = (field: string, value: any, options: SimilarityOptions): FilterItem => ({\n column: field,\n operator: FilterOperation.StrictWordSimilarityDistance,\n staticValue: value,\n simiarityOptions: options,\n});\n\nexport const EUCLIDEAN_DISTANCE = (field: string, value: any, options: SimilarityOptions): FilterItem => ({\n column: field,\n operator: FilterOperation.EuclideanDistance,\n staticValue: value,\n simiarityOptions: options,\n});\n\nexport const NEGATIVE_INNER_PRODUCT = (field: string, value: any, options: SimilarityOptions): FilterItem => ({\n column: field,\n operator: FilterOperation.NegativeInnerProduct,\n staticValue: value,\n simiarityOptions: options,\n});\n\nexport const COSINE_DISTANCE = (field: string, value: any, options: SimilarityOptions): FilterItem => ({\n column: field,\n operator: FilterOperation.CosineDistance,\n staticValue: value,\n simiarityOptions: options,\n});\n\n// Helper function for values (backward compatibility)\nexport const Value = (value: any) => value;\n\n// Helper function for wrapping filter\nexport function FilterWrapper(filter: Filter | FilterGroup | FilterItem | undefined): Filter | undefined {\n if (filter === undefined) {\n return undefined;\n }\n if (!Array.isArray(filter)) {\n return OR(AND(filter));\n } else if (!filter.every((item) => Array.isArray(item))) {\n return OR(filter);\n } else {\n return filter;\n }\n}\n","import { Client } from '@/core/client';\nimport { ClientConfig } from '@/core/config';\nimport { FilterWrapper } from '@/types/filter';\nimport { DeleteData, Insert, Query, Update } from '@/types/requests';\n\nexport class DataClient {\n private client: Client;\n\n constructor(config: ClientConfig = new ClientConfig()) {\n this.client = new Client(config);\n }\n\n async insertData(data: Insert): Promise<any> {\n const response = await this.client.post('/insert', data);\n if (response.status === 'success') {\n return response.data;\n }\n throw new Error(response.message);\n }\n\n async insertOne(data: Insert): Promise<any> {\n const response = await this.client.post('/insert/one', data);\n if (response.status === 'success') {\n return response.data;\n }\n throw new Error(response.message);\n }\n\n async updateByPrimaryKey(pk: string, data: Update): Promise<any> {\n const response = await this.client.post(`/update/${pk}`, data);\n if (response.status === 'success') {\n return response.data;\n }\n throw new Error(response.message);\n }\n\n async queryOne(data: Query, model?: any): Promise<any> {\n data.query.filter = FilterWrapper(data.query.filter);\n const response = await this.client.post('/query', { One: data });\n if (response.status === 'success') {\n const responseData = response.data;\n if (model !== undefined) {\n return new model(responseData);\n }\n return responseData;\n }\n throw new Error(response.message);\n }\n\n async queryMany(data: Query, model?: any): Promise<any> {\n data.query.filter = FilterWrapper(data.query.filter);\n const response = await this.client.post('/query', { Many: data });\n if (response.status === 'success') {\n const responseData = response.data;\n if (model !== undefined) {\n // In TypeScript, we would typically use a validation library or manual validation\n // For now, we'll return the data as-is, but in a real implementation you might want to use\n // a library like class-validator or zod for validation\n return responseData.map((item: any) => new model(item));\n }\n return responseData;\n }\n throw new Error(response.message);\n }\n\n async updateData(data: Update): Promise<any> {\n const response = await this.client.post('/update', data);\n if (response.status === 'success') {\n return response.data;\n }\n throw new Error(response.message);\n }\n\n async deleteData(data: DeleteData): Promise<any> {\n const response = await this.client.post('/delete', data);\n if (response.status === 'success') {\n return response.data;\n }\n throw new Error(response.message);\n }\n}\n","import { Client } from '@/core/client';\nimport { ClientConfig } from '@/core/config';\nimport { SyntropixDBTable, SyntropixDBTableListItem } from '@/types/common';\nimport { TableCreateResponse } from '@/types/dto/table';\nimport {\n TableAddColumn,\n TableCreate,\n TableDrop,\n TableDropColumn,\n TableGetList,\n TableGetSchema,\n TableModifyColumn,\n TableRename,\n TableTruncate,\n} from '@/types/requests';\n\nexport class TableClient {\n private client: Client;\n\n constructor(config: ClientConfig = new ClientConfig()) {\n this.client = new Client(config);\n }\n\n async createTable(data: TableCreate): Promise<TableCreateResponse> {\n const response = await this.client.post('/table/create', data);\n if (response.status === 'success') {\n return response.data;\n }\n throw new Error(response.message);\n }\n\n async dropTable(data: TableDrop): Promise<any> {\n const response = await this.client.post('/table/drop', data);\n if (response.status === 'success') {\n return response.data;\n }\n throw new Error(response.message);\n }\n\n async renameTable(data: TableRename): Promise<any> {\n const response = await this.client.post('/table/rename', data);\n if (response.status === 'success') {\n return response.data;\n }\n throw new Error(response.message);\n }\n\n async truncateTable(data: TableTruncate): Promise<any> {\n const response = await this.client.post('/table/truncate', data);\n if (response.status === 'success') {\n return response.data;\n }\n throw new Error(response.message);\n }\n\n async addColumn(data: TableAddColumn): Promise<any> {\n const response = await this.client.post('/table/column/add', data);\n if (response.status === 'success') {\n return response.data;\n }\n throw new Error(response.message);\n }\n\n async dropColumn(data: TableDropColumn): Promise<any> {\n const response = await this.client.post('/table/column/drop', data);\n if (response.status === 'success') {\n return response.data;\n }\n throw new Error(response.message);\n }\n\n async modifyColumn(data: TableModifyColumn): Promise<any> {\n const response = await this.client.post('/table/column/modify', data);\n if (response.status === 'success') {\n return response.data;\n }\n throw new Error(response.message);\n }\n\n async getTableSchema(data: TableGetSchema): Promise<SyntropixDBTable> {\n const response = await this.client.post('/table/schema', data);\n if (response.status === 'success') {\n return response.data as SyntropixDBTable;\n }\n throw new Error(response.message);\n }\n\n async getTableList(data: TableGetList): Promise<SyntropixDBTableListItem[]> {\n const response = await this.client.get('/table/list', data);\n if (response.status === 'success') {\n return response.data as SyntropixDBTableListItem[];\n }\n throw new Error(response.message);\n }\n}\n","import { ClientConfig } from '@/core/config';\nimport { DataClient } from '@/core/data-client';\nimport { TableClient } from '@/core/table-client';\n\nexport class SyntropixClient {\n private config: ClientConfig;\n private _tableClient?: TableClient;\n private _dataClient?: DataClient;\n\n constructor(config: ClientConfig = new ClientConfig()) {\n this.config = config;\n }\n\n get table(): TableClient {\n if (!this._tableClient) {\n this._tableClient = new TableClient(this.config);\n }\n return this._tableClient;\n }\n\n get data(): DataClient {\n if (!this._dataClient) {\n this._dataClient = new DataClient(this.config);\n }\n return this._dataClient;\n }\n}\n","import { ColumnDataType } from '@/types/data-type';\nimport { SortType } from '@/types/filter';\nimport { SyntropixDBAccessType } from '@/types/requests';\n\nexport enum ForeignKeyAction {\n Cascade = 'Cascade',\n Restrict = 'Restrict',\n SetNull = 'SetNull',\n NoAction = 'NoAction',\n SetDefault = 'SetDefault',\n}\n\nexport enum AggregateFunction {\n Count = 'Count',\n Sum = 'Sum',\n Avg = 'Avg',\n Min = 'Min',\n Max = 'Max',\n CountDistinct = 'CountDistinct',\n}\n\nexport interface Sort {\n column: string;\n direction: SortType;\n}\n\nexport interface Join {\n table: string;\n on: any;\n}\n\nexport interface Aggregate {\n column: string;\n function: AggregateFunction;\n alias: string;\n}\n\nexport interface GroupBy {\n columns: string[];\n}\n\nexport interface ForeignKey {\n name?: string;\n fromTableName: string;\n fromColumnName: string;\n toTableName: string;\n toColumnName: string;\n onDelete?: ForeignKeyAction;\n onUpdate?: ForeignKeyAction;\n}\n\nexport interface Column {\n name: string;\n displayName?: string;\n description?: string;\n columnType: ColumnDataType;\n isPrimaryKey?: boolean;\n isNullable?: boolean;\n autoIncrement?: boolean;\n default?: any;\n defaultAccess?: SyntropixDBAccessType;\n}\n\nexport interface Index {\n name: string;\n columns: string[];\n unique?: boolean;\n}\n\nexport interface SyntropixDBTable {\n id: string;\n name: string;\n description: string;\n createdAt: Date;\n columns: Column[];\n}\n\nexport interface SyntropixDBTableListItem {\n id: string;\n name: string;\n description: string;\n metadata: Record<string, any>;\n path: string;\n visible: boolean;\n access: SyntropixDBAccessType;\n}\n","interface StringType {\n String: number;\n}\ninterface VectorType {\n Vector: number;\n}\ninterface EnumType {\n Enum: {\n name: string;\n variants: string[];\n };\n}\ninterface MoneyType {\n Money: [number, number] | null;\n}\ninterface DecimalType {\n Decimal: [number, number] | null;\n}\n\nexport const ArrayDataType = {\n String: (maxLength: number): StringType => ({ String: maxLength }),\n Text: 'Text',\n Integer: 'Integer',\n BigInteger: 'BigInteger',\n Double: 'Double',\n Decimal: (precision: number, scale: number): DecimalType => ({\n Decimal: precision && scale ? [precision, scale] : null,\n }),\n DateTime: 'DateTime',\n Timestamp: 'Timestamp',\n Date: 'Date',\n Boolean: 'Boolean',\n Money: (precision: number, scale: number): MoneyType => ({ Money: precision && scale ? [precision, scale] : null }),\n Uuid: 'Uuid',\n Enum: (name: string, variants: string[]): EnumType => ({ Enum: { name, variants } }),\n Json: 'Json',\n} as const;\n\ntype ArrayDataTypeMap = typeof ArrayDataType;\n\ntype ArrayDataTypeValues = ArrayDataTypeMap[keyof ArrayDataTypeMap];\n\ntype ArrayDataTypeReturnTypes = ReturnType<Extract<ArrayDataTypeValues, (...args: any[]) => any>>;\n\nexport type ArrayDataType = Exclude<ArrayDataTypeValues, (...args: any[]) => any> | ArrayDataTypeReturnTypes;\n\ninterface ArrayType {\n Array: ArrayDataType;\n}\n\nexport const ColumnDataType = {\n Integer: 'Integer',\n String: (maxLength: number): StringType => ({ String: maxLength }),\n Text: 'Text',\n Boolean: 'Boolean',\n DateTime: 'DateTime',\n Timestamp: 'Timestamp',\n Date: 'Date',\n Json: 'Json',\n Uuid: 'Uuid',\n Double: 'Double',\n\n Vector: (dimensions: number): VectorType => ({ Vector: dimensions }),\n Array: (dataType: ArrayDataType): ArrayType => ({ Array: dataType }),\n Enum: (name: string, variants: string[]): EnumType => ({ Enum: { name, variants } }),\n Money: (precision: number, scale: number): MoneyType => ({ Money: precision && scale ? [precision, scale] : null }),\n Decimal: (precision: number, scale: number): DecimalType => ({\n Decimal: precision && scale ? [precision, scale] : null,\n }),\n} as const;\n\ntype DataTypeMap = typeof ColumnDataType;\n\ntype DataTypeValues = DataTypeMap[keyof DataTypeMap];\n\ntype DataTypeReturnTypes = ReturnType<Extract<DataTypeValues, (...args: any[]) => any>>;\n\nexport type ColumnDataType = Exclude<DataTypeValues, (...args: any[]) => any> | DataTypeReturnTypes;\n","// Field definitions for ORM\nimport { Column, ForeignKeyAction } from '@/types/common';\nimport { ArrayDataType, ColumnDataType } from '@/types/data-type';\nimport { SyntropixDBAccessType } from '@/types/requests';\n\nexport abstract class Field {\n name: string = '';\n description: string = '';\n columnType: ColumnDataType;\n isPrimaryKey: boolean = false;\n isNullable: boolean = false;\n autoIncrement: boolean = false;\n default?: any;\n defaultAccess?: SyntropixDBAccessType;\n\n constructor(\n columnType: ColumnDataType,\n options: {\n name?: string;\n description?: string;\n isPrimaryKey?: boolean;\n isNullable?: boolean;\n autoIncrement?: boolean;\n default?: any;\n defaultAccess?: SyntropixDBAccessType;\n } = {},\n ) {\n this.columnType = columnType;\n this.name = options.name?.toLowerCase() || '';\n this.description = options.description || '';\n this.isPrimaryKey = options.isPrimaryKey || false;\n this.isNullable = options.isNullable || false;\n this.autoIncrement = options.autoIncrement || false;\n this.default = options.default;\n this.defaultAccess = options.defaultAccess;\n }\n\n into(): Column {\n return {\n name: this.name,\n columnType: this.columnType,\n description: this.description,\n isPrimaryKey: this.isPrimaryKey,\n isNullable: this.isNullable,\n autoIncrement: this.autoIncrement,\n default: this.default,\n defaultAccess: this.defaultAccess,\n };\n }\n}\n\nexport class ForeignKeyField extends Field {\n tableName: string;\n columnName: string;\n onDelete: ForeignKeyAction;\n onUpdate: ForeignKeyAction;\n\n constructor(\n columnType: ColumnDataType,\n tableName: string,\n columnName: string,\n options: {\n onDelete?: ForeignKeyAction;\n onUpdate?: ForeignKeyAction;\n description?: string;\n isPrimaryKey?: boolean;\n isNullable?: boolean;\n default?: any;\n defaultAccess?: SyntropixDBAccessType;\n } = {},\n ) {\n super(columnType, options);\n this.tableName = tableName;\n this.columnName = columnName;\n this.onDelete = options.onDelete || ForeignKeyAction.Cascade;\n this.onUpdate = options.onUpdate || ForeignKeyAction.Cascade;\n }\n}\n\nexport class StringField extends Field {\n constructor(\n maxLength: number,\n options: {\n description?: string;\n isPrimaryKey?: boolean;\n isNullable?: boolean;\n default?: string;\n defaultAccess?: SyntropixDBAccessType;\n } = {},\n ) {\n super(ColumnDataType.String(maxLength), options);\n }\n}\n\nexport class TextField extends Field {\n constructor(\n options: {\n description?: string;\n isPrimaryKey?: boolean;\n isNullable?: boolean;\n default?: string;\n defaultAccess?: SyntropixDBAccessType;\n } = {},\n ) {\n super(ColumnDataType.Text, options);\n }\n}\n\nexport class IntegerField extends Field {\n constructor(\n options: {\n description?: string;\n isPrimaryKey?: boolean;\n isNullable?: boolean;\n autoIncrement?: boolean;\n default?: number;\n defaultAccess?: SyntropixDBAccessType;\n } = {},\n ) {\n super(ColumnDataType.Integer, options);\n }\n}\n\nexport class BooleanField extends Field {\n constructor(\n options: {\n description?: string;\n isPrimaryKey?: boolean;\n isNullable?: boolean;\n default?: boolean;\n defaultAccess?: SyntropixDBAccessType;\n } = {},\n ) {\n super(ColumnDataType.Boolean, options);\n }\n}\n\nexport class DateTimeField extends Field {\n constructor(\n options: {\n description?: string;\n isPrimaryKey?: boolean;\n isNullable?: boolean;\n default?: Date;\n defaultAccess?: SyntropixDBAccessType;\n } = {},\n ) {\n super(ColumnDataType.DateTime, options);\n }\n}\n\nexport class TimestampField extends Field {\n constructor(\n options: {\n description?: string;\n isPrimaryKey?: boolean;\n isNullable?: boolean;\n default?: Date;\n defaultAccess?: SyntropixDBAccessType;\n } = {},\n ) {\n super(ColumnDataType.Timestamp, options);\n }\n}\n\nexport class DateField extends Field {\n constructor(\n options: {\n description?: string;\n isPrimaryKey?: boolean;\n isNullable?: boolean;\n default?: Date;\n defaultAccess?: SyntropixDBAccessType;\n } = {},\n ) {\n super(ColumnDataType.Date, options);\n }\n}\n\nexport class JsonField extends Field {\n constructor(\n options: {\n description?: string;\n isPrimaryKey?: boolean;\n isNullable?: boolean;\n default?: Record<string, any>;\n defaultAccess?: SyntropixDBAccessType;\n } = {},\n ) {\n super(ColumnDataType.Json, options);\n }\n}\n\nexport class UuidField extends Field {\n constructor(\n options: {\n description?: string;\n isPrimaryKey?: boolean;\n isNullable?: boolean;\n default?: string;\n defaultAccess?: SyntropixDBAccessType;\n } = {},\n ) {\n super(ColumnDataType.Uuid, options);\n }\n}\n\nexport class VectorField extends Field {\n constructor(\n dimensions: number,\n options: {\n description?: string;\n isPrimaryKey?: boolean;\n isNullable?: boolean;\n default?: number[];\n defaultAccess?: SyntropixDBAccessType;\n } = {},\n ) {\n super(ColumnDataType.Vector(dimensions), options);\n }\n}\n\nexport class ArrayField extends Field {\n constructor(\n dataType: ArrayDataType,\n options: {\n description?: string;\n isPrimaryKey?: boolean;\n isNullable?: boolean;\n default?: any[];\n defaultAccess?: SyntropixDBAccessType;\n } = {},\n ) {\n super(ColumnDataType.Array(dataType), options);\n }\n}\n\nexport class EnumField extends Field {\n constructor(\n name: string,\n variants: string[],\n options: {\n description?: string;\n isPrimaryKey?: boolean;\n isNullable?: boolean;\n default?: string;\n defaultAccess?: SyntropixDBAccessType;\n } = {},\n ) {\n super(ColumnDataType.Enum(name, variants), options);\n }\n}\n\nexport class MoneyField extends Field {\n constructor(\n precision: number,\n scale: number,\n options: {\n description?: string;\n isPrimaryKey?: boolean;\n isNullable?: boolean;\n default?: number;\n defaultAccess?: SyntropixDBAccessType;\n } = {},\n ) {\n super(ColumnDataType.Money(precision, scale), options);\n }\n}\n\nexport class DecimalField extends Field {\n constructor(\n precision: number,\n scale: number,\n options: {\n description?: string;\n isPrimaryKey?: boolean;\n isNullable?: boolean;\n default?: number;\n defaultAccess?: SyntropixDBAccessType;\n } = {},\n ) {\n super(ColumnDataType.Decimal(precision, scale), options);\n }\n}\n\nexport class DoubleField extends Field {\n constructor(\n options: {\n description?: string;\n isPrimaryKey?: boolean;\n isNullable?: boolean;\n default?: number;\n defaultAccess?: SyntropixDBAccessType;\n } = {},\n ) {\n super(ColumnDataType.Double, options);\n }\n}\n","import { ClientConfig } from '@/core/config';\nimport { SyntropixClient } from '@/core/syntropix';\nimport { Aggregate, AggregateFunction, ForeignKey, GroupBy, Index, Join, Sort } from '@/types/common';\nimport { ColumnDataType } from '@/types/data-type';\nimport { TableCreateResponse } from '@/types/dto/table';\nimport { Field, ForeignKeyField, IntegerField } from '@/types/field';\nimport { AND, EQ, Filter, GTE, OR, Value } from '@/types/filter';\nimport 'reflect-metadata';\n\n// Metadata keys\nconst FIELDS_KEY = Symbol('fields');\nconst TABLE_NAME_KEY = Symbol('tableName');\nconst DESCRIPTION_KEY = Symbol('description');\nconst INDEXES_KEY = Symbol('indexes');\n\n// Column decorator\nexport function Column(\n options: {\n type?: ColumnDataType;\n name?: string;\n description?: string;\n primary?: boolean;\n nullable?: boolean;\n autoIncrement?: boolean;\n default?: any;\n } = {},\n) {\n return function (target: any, propertyKey: string) {\n const fields = Reflect.getMetadata(FIELDS_KEY, target.constructor) || {};\n\n const fieldName = options.name || propertyKey.toLowerCase();\n const columnType = options.type || ColumnDataType.Text;\n\n const field = new (class extends Field {\n constructor() {\n super(columnType, {\n name: fieldName,\n description: options.description,\n isPrimaryKey: options.primary,\n isNullable: options.nullable,\n autoIncrement: options.autoIncrement,\n default: options.default,\n });\n }\n })();\n\n fields[propertyKey] = field;\n Reflect.defineMetadata(FIELDS_KEY, fields, target.constructor);\n };\n}\n\n// Description decorator\nexport function Description(description: string) {\n return function (target: any) {\n Reflect.defineMetadata(DESCRIPTION_KEY, description, target);\n };\n}\n\n// ForeignKey decorator\nexport function ForeignKey(\n tableName: string,\n columnName: string,\n options: {\n type?: ColumnDataType;\n name?: string;\n onDelete?: string;\n onUpdate?: string;\n description?: string;\n nullable?: boolean;\n default?: any;\n } = {},\n) {\n return function (target: any, propertyKey: string) {\n const fields = Reflect.getMetadata(FIELDS_KEY, target.constructor) || {};\n\n const field = new ForeignKeyField(options.type || ColumnDataType.Integer, tableName, columnName, {\n onDelete: options.onDelete as any,\n onUpdate: options.onUpdate as any,\n description: options.description,\n isNullable: options.nullable,\n default: options.default,\n });\n field.name = options.name || propertyKey.toLowerCase();\n\n fields[propertyKey] = field;\n Reflect.defineMetadata(FIELDS_KEY, fields, target.constructor);\n };\n}\n\nexport class BaseModel {\n private _client?: SyntropixClient;\n private _extra: Record<string, any> = {};\n\n constructor(data: Record<string, any> = {}) {\n const fields = this.getFields();\n\n // Create a mapping from column names to property names\n const columnToPropertyMap: Record<string, string> = {};\n for (const [propertyName, field] of Object.entries(fields)) {\n columnToPropertyMap[field.name] = propertyName;\n }\n\n for (const [key, value] of Object.entries(data)) {\n // Check if key is a property name\n if (key in fields) {\n (this as any)[key] = value;\n }\n // Check if key is a column name\n else if (key in columnToPropertyMap) {\n (this as any)[columnToPropertyMap[key]] = value;\n }\n // Otherwise, store in _extra\n else {\n this._extra[key] = value;\n }\n }\n }\n\n // Static metadata getters\n protected static getTableName(): string {\n const tableName = Reflect.getMetadata(TABLE_NAME_KEY, this);\n if (tableName) return tableName;\n\n // Check for static tableName property\n if ('tableName' in this && typeof (this as any).tableName === 'string') {\n return (this as any).tableName;\n }\n\n return this.name.toLowerCase();\n }\n\n public static getDescription(): string {\n const metadataDescription = Reflect.getMetadata(DESCRIPTION_KEY, this);\n if (metadataDescription) return metadataDescription;\n\n // Check for static description property as fallback\n if ('description' in this && typeof (this as any).description === 'string') {\n return (this as any).description;\n }\n\n return '';\n }\n\n protected static getIndexes(): Index[] {\n return Reflect.getMetadata(INDEXES_KEY, this) || [];\n }\n\n protected static getFields(): Record<string, Field> {\n const fields = Reflect.getMetadata(FIELDS_KEY, this) || {};\n\n // Check if there's a primary key\n let hasPrimaryKey = false;\n for (const field of Object.values(fields) as Field[]) {\n if (field.isPrimaryKey) {\n hasPrimaryKey = true;\n field.isNullable = false;\n break;\n }\n }\n\n // If no primary key, add default 'id' field\n if (!hasPrimaryKey && !('id' in fields)) {\n fields['id'] = new IntegerField({\n isPrimaryKey: true,\n isNullable: false,\n autoIncrement: true,\n description: 'Primary key',\n });\n fields['id'].name = 'id';\n }\n\n return fields;\n }\n\n protected static getPrimaryKeyName(): string {\n const fields = this.getFields();\n for (const [key, field] of Object.entries(fields)) {\n if (field.isPrimaryKey) {\n return field.name;\n }\n }\n return 'id';\n }\n\n protected static getAssociations(): ForeignKeyField[] {\n const fields = this.getFields();\n return Object.values(fields).filter((f) => f instanceof ForeignKeyField) as ForeignKeyField[];\n }\n\n // Instance metadata getters\n protected getFields(): Record<string, Field> {\n return (this.constructor as typeof BaseModel).getFields();\n }\n\n protected getTableName(): string {\n return (this.constructor as typeof BaseModel).getTableName();\n }\n\n protected getPrimaryKeyName(): string {\n return (this.constructor as typeof BaseModel).getPrimaryKeyName();\n }\n\n protected getPrimaryKey(): Field | undefined {\n const fields = this.getFields();\n for (const field of Object.values(fields)) {\n if (field.isPrimaryKey) {\n return field;\n }\n }\n return undefined;\n }\n\n // Client getter\n protected get client(): SyntropixClient {\n if (!this._client) {\n this._client = new SyntropixClient(new ClientConfig());\n }\n return this._client;\n }\n\n // Table operations\n static async createTable(_client?: SyntropixClient | null): Promise<TableCreateResponse> {\n const fields = this.getFields();\n const columns = Object.values(fields).map((f) => f.into());\n const foreignKeys: ForeignKey[] = this.getAssociations().map((f) => ({\n fromTableName: this.getTableName(),\n fromColumnName: f.name,\n toTableName: f.tableName,\n toColumnName: f.columnName,\n onDelete: f.onDelete,\n onUpdate: f.onUpdate,\n }));\n const indexes = this.getIndexes();\n\n const client = _client || new SyntropixClient(new ClientConfig());\n return client.table.createTable({\n name: this.getTableName(),\n description: this.getDescription() || 'No description',\n columns,\n foreignKeys: foreignKeys,\n indexes,\n });\n }\n\n static async dropTable(_client?: SyntropixClient | null): Promise<any> {\n const client = _client || new SyntropixClient(new ClientConfig());\n return client.table.dropTable({ tableName: this.getTableName() });\n }\n\n static async renameTable(newName: string, _client?: SyntropixClient | null): Promise<any> {\n const client = _client || new SyntropixClient(new ClientConfig());\n return client.table.renameTable({\n tableName: this.getTableName(),\n newTableName: newName,\n });\n }\n\n static async truncateTable(_client?: SyntropixClient | null): Promise<any> {\n const client = _client || new SyntropixClient(new ClientConfig());\n return client.table.truncateTable({ tableName: this.getTableName() });\n }\n\n // Data operations\n static async create<T extends BaseModel>(\n this: new (data?: any) => T,\n data: Record<string, any>,\n _client?: SyntropixClient | null,\n ): Promise<any> {\n const model = this as any as typeof BaseModel;\n const fields = model.getFields();\n const columns: string[] = [];\n const values: any[] = [];\n\n for (const [key, value] of Object.entries(data)) {\n if (key in fields) {\n columns.push(fields[key].name);\n values.push(value);\n } else {\n throw new Error(`Invalid field: ${key}`);\n }\n }\n\n const client = _client || new SyntropixClient(new ClientConfig());\n return client.data.insertOne({\n tableName: model.getTableName(),\n data: {\n columns,\n values: [values],\n },\n });\n }\n\n async save(_client?: SyntropixClient | null): Promise<any> {\n const pk = this.getPrimaryKey();\n const pkValue = (this as any)[this.getPrimaryKeyName()];\n const fields = this.getFields();\n\n if (pkValue === null || pkValue === undefined) {\n const data: Record<string, any> = {};\n for (const [key, field] of Object.entries(fields)) {\n data[key] = (this as any)[key];\n }\n return (this.constructor as typeof BaseModel).create(data, _client);\n }\n\n const columns: string[] = [];\n const values: any[] = [];\n for (const [key, field] of Object.entries(fields)) {\n if (field.name !== pk?.name) {\n columns.push(field.name);\n values.push((this as any)[key]);\n }\n }\n\n return (\n _client ||\n this.client.data.updateByPrimaryKey(pkValue, {\n tableName: this.getTableName(),\n payload: {\n filter: [[]],\n columns,\n values,\n },\n })\n );\n }\n\n async remove(filter?: Filter, _client?: SyntropixClient | null): Promise<number> {\n const pk = this.getPrimaryKey();\n const pkValue = (this as any)[this.getPrimaryKeyName()];\n const finalFilter = filter || OR(AND(EQ(pk?.name || 'id', pkValue)));\n\n return (\n _client ||\n this.client.data.deleteData({\n tableName: this.getTableName(),\n payload: {\n filter: finalFilter,\n },\n })\n );\n }\n\n static async bulkCreate<T extends BaseModel>(\n this: new (data?: any) => T,\n datas: Record<string, any>[],\n batchSize: number = 32,\n _client?: SyntropixClient | null,\n ): Promise<number> {\n if (!datas.length) return 0;\n if (batchSize <= 0) throw new Error('Batch size must be greater than 0');\n\n const model = this as any as typeof BaseModel;\n const fields = model.getFields();\n let cnt = 0;\n batchSize = Math.min(batchSize, 128);\n\n const columns = Object.keys(datas[0]);\n const columnsSet = new Set(columns);\n\n for (const col of columns) {\n if (!(col in fields)) {\n throw new Error(`Invalid field: ${col}`);\n }\n }\n\n let values: any[][] = [];\n const client = _client || new SyntropixClient(new ClientConfig());\n\n for (const data of datas) {\n if (columnsSet.size !== new Set(Object.keys(data)).size || !columns.every((c) => c in data)) {\n throw new Error('All data must have the same columns');\n }\n\n values.push(columns.map((c) => data[c]));\n\n if (values.length === batchSize) {\n cnt += await client.data.insertData({\n tableName: model.getTableName(),\n data: { columns: columns.map((c) => fields[c].name), values },\n });\n values = [];\n }\n }\n\n if (values.length > 0) {\n cnt += await client.data.insertData({\n tableName: model.getTableName(),\n data: { columns: columns.map((c) => fields[c].name), values },\n });\n }\n\n return cnt;\n }\n\n static async update<T extends BaseModel>(\n this: new (data?: any) => T,\n filter: Filter,\n data: Record<string, any>,\n _client?: SyntropixClient | null,\n ): Promise<number> {\n const model = this as any as typeof BaseModel;\n const fields = model.getFields();\n const columns = Object.keys(data);\n\n if (!columns.length) {\n throw new Error('No columns to update');\n }\n\n for (const col of columns) {\n if (!(col in fields)) {\n throw new Error(`Invalid field: ${col}`);\n }\n }\n\n const values = columns.map((c) => data[c]);\n const client = _client || new SyntropixClient(new ClientConfig());\n\n return client.data.updateData({\n tableName: model.getTableName(),\n payload: {\n filter,\n columns: columns.map((c) => fields[c].name),\n values,\n },\n });\n }\n\n static async delete<T extends BaseModel>(\n this: new (data?: any) => T,\n filter: Filter,\n _client?: SyntropixClient | null,\n ): Promise<number> {\n const model = this as any as typeof BaseModel;\n const client = _client || new SyntropixClient(new ClientConfig());\n\n return client.data.deleteData({\n tableName: model.getTableName(),\n payload: { filter },\n });\n }\n\n static async get<T extends BaseModel>(\n this: new (data?: any) => T,\n filter: Filter,\n select?: string[],\n _client?: SyntropixClient | null,\n ): Promise<T> {\n const model = this as any as typeof BaseModel;\n const fields = model.getFields();\n const client = _client || new SyntropixClient(new ClientConfig());\n\n const data = await client.data.queryOne({\n tableName: model.getTableName(),\n query: {\n filter,\n select: select || Object.values(fields).map((f) => f.name),\n limit: 1,\n },\n });\n\n return new this(data);\n }\n\n static async filter<T extends BaseModel>(\n this: new (data?: any) => T,\n options: {\n filter: Filter;\n sort?: Sort[];\n aggregate?: Aggregate[];\n join?: Join;\n limit?: number;\n offset?: number;\n groupBy?: GroupBy;\n select?: string[];\n _client?: SyntropixClient | null;\n },\n ): Promise<T[]> {\n const model = this as any as typeof BaseModel;\n const client = options._client || new SyntropixClient(new ClientConfig());\n\n const data = await client.data.queryMany({\n tableName: model.getTableName(),\n query: {\n filter: options.filter,\n sort: options.sort,\n aggregate: options.aggregate,\n join: options.join ? [options.join] : undefined,\n limit: options.limit,\n offset: options.offset,\n groupBy: options.groupBy,\n select: options.select,\n },\n });\n\n return data.map((item: any) => new this(item));\n }\n\n static async count<T extends BaseModel>(\n this: new (data?: any) => T,\n options: {\n filter?: Filter;\n join?: Join;\n groupBy?: GroupBy;\n _client?: SyntropixClient | null;\n } = {},\n ): Promise<number> {\n const model = this as any as typeof BaseModel;\n const client = options._client || new SyntropixClient(new ClientConfig());\n\n const data = await client.data.queryMany({\n tableName: model.getTableName(),\n query: {\n filter: options.filter || [[GTE('id', Value(0))]],\n aggregate: [\n {\n column: 'id',\n function: AggregateFunction.Count,\n alias: 'count',\n },\n ],\n join: options.join ? [options.join] : undefined,\n limit: 1,\n offset: 0,\n groupBy: options.groupBy,\n select: ['count'],\n },\n });\n\n return data.length > 0 ? data[0].count : 0;\n }\n\n toString(): string {\n const fields = this.getFields();\n const data: Record<string, any> = {};\n\n for (const key of Object.keys(fields)) {\n const value = (this as any)[key];\n if (!(value instanceof Field)) {\n data[key] = value;\n }\n }\n\n data._extra = this._extra;\n return `${this.constructor.name}(${JSON.stringify(data).slice(1, -1)})`;\n }\n\n toJSON(): Record<string, any> {\n const fields = this.getFields();\n const data: Record<string, any> = {};\n\n for (const key of Object.keys(fields)) {\n data[key] = (this as any)[key];\n }\n\n return { ...data, ...this._extra };\n }\n}\n","// Request types for database operations\nimport { Aggregate, Column, ForeignKey, GroupBy, Index, Join, Sort } from '@/types/common';\nimport { Filter, FilterGroup, FilterItem } from '@/types/filter';\n\nexport const SyntropixDBAccessType = {\n None: 'None',\n Read: 'Read',\n Write: 'Write',\n Admin: 'Admin',\n} as const;\n\nexport type SyntropixDBAccessType = (typeof SyntropixDBAccessType)[keyof typeof SyntropixDBAccessType];\n\nexport interface TableCreate {\n name: string;\n displayName?: string;\n description?: string;\n columns: Column[];\n foreignKeys: ForeignKey[];\n indexes: Index[];\n defaultAccess?: SyntropixDBAccessType;\n metadata?: Record<string, any>;\n visible?: boolean;\n path?: string;\n}\n\nexport interface TableDrop {\n tableName: string;\n}\n\nexport interface TableRename {\n tableName: string;\n newTableName: string;\n}\n\nexport interface TableTruncate {\n tableName: string;\n}\n\nexport interface TableAddColumn {\n tableName: string;\n column: Column;\n}\n\nexport interface TableDropColumn {\n tableName: string;\n columnName: string;\n}\n\nexport interface TableModifyColumn {\n tableName: string;\n column: Column;\n}\n\nexport interface TableGetSchema {\n tableName: string;\n}\n\nexport interface TableGetList {\n search?: string;\n path?: string;\n page?: number;\n pageSize?: number;\n}\n\n// Data operations\nexport interface InsertData {\n columns: string[];\n values: any[][];\n}\n\nexport interface Insert {\n tableName: string;\n data: InsertData;\n}\n\nexport interface UpdatePayload {\n filter: Filter;\n columns: string[];\n values: any[];\n}\n\nexport interface Update {\n tableName: string;\n payload: UpdatePayload;\n}\n\nexport interface DeleteDataPayload {\n filter: Filter;\n}\n\nexport interface DeleteData {\n tableName: string;\n payload: DeleteDataPayload;\n}\n\nexport interface QueryPayload {\n filter?: Filter | FilterGroup | FilterItem;\n sort?: Sort[];\n aggregate?: Aggregate[];\n join?: Join[];\n limit?: number;\n offset?: number;\n groupBy?: GroupBy;\n select?: string[];\n}\n\nexport interface Query {\n tableName: string;\n query: QueryPayload;\n}\n"]}
1
+ {"version":3,"sources":["../src/types/model/filter.ts","../src/types/model/foreign-key.ts","../src/types/model/shared.ts","../src/core/client/base-client.ts","../src/core/config.ts","../src/core/filter-builder.ts","../src/core/client/data-client.ts","../src/core/client/table-client.ts","../src/core/client/syntropix-client.ts","../src/core/data-type.ts","../src/core/field.ts","../src/core/base-model.ts"],"names":["SortType","Descending","Ascending","AggregateFunction","FilterOperation","ForeignKeyAction","Cascade","Restrict","SetNull","NoAction","SetDefault","AccessType","None","Read","Write","Admin","handleError","error","axiosErr","response","data","status","Error","message","BaseClient","config","headers","Authorization","apiKey","url","path","startsWith","slice","baseUrl","get","axios","params","content","EJSON","parse","JSON","stringify","isAxiosError","console","post","ClientConfig","timeout","retries","process","env","SYNTROPIX_API_KEY","SYNTROPIX_API_URL","SYNTROPIX_API_TIMEOUT","SYNTROPIX_API_RETRIES","endsWith","AND","conditions","OR","EQ","field","value","columnName","operator","staticValue","NE","NEQ","GT","GTE","LT","LTE","IN","values","In","CONTAINS","Contains","OVERLAP","Overlap","I_LIKE","pattern","ILike","NOT_I_LIKE","NotILike","NOT_IN","NotIn","LIKE","Like","NOT_LIKE","NotLike","IS_NULL","IsNull","IS_NOT_NULL","IsNotNull","BETWEEN","min","max","Between","EQ_COL","otherField","columnValue","NE_COL","GT_COL","GTE_COL","LT_COL","LTE_COL","SIMILARITY","options","Similarity","simiarityOptions","SIMILARITY_DISTANCE","SimilarityDistance","WORD_SIMILARITY","WordSimilarity","WORD_SIMILARITY_DISTANCE","WordSimilarityDistance","STRICT_WORD_SIMILARITY","StrictWordSimilarity","STRICT_WORD_SIMILARITY_DISTANCE","StrictWordSimilarityDistance","EUCLIDEAN_DISTANCE","EuclideanDistance","NEGATIVE_INNER_PRODUCT","NegativeInnerProduct","COSINE_DISTANCE","CosineDistance","Value","FilterWrapper","filter","undefined","Array","isArray","every","item","DataClient","client","insertData","insertOne","updateByPrimaryKey","pk","queryOne","model","query","One","queryMany","Many","map","updateData","deleteData","TableClient","createTable","dropTable","renameTable","truncateTable","addColumn","dropColumn","modifyColumn","getTableSchema","getTableList","SyntropixClient","_tableClient","_dataClient","table","ArrayDataType","String","maxLength","Decimal","precision","scale","Text","Integer","BigInteger","Double","DateTime","Timestamp","Date","Boolean","Money","Uuid","Enum","name","variants","Json","ColumnDataType","Vector","dimensions","dataType","Field","displayName","description","columnType","isPrimaryKey","isNullable","autoIncrement","default","defaultAccess","toLowerCase","intoColumnCreateDto","ForeignKeyField","tableName","onDelete","onUpdate","StringField","TextField","IntegerField","BooleanField","DateTimeField","TimestampField","DateField","JsonField","UuidField","VectorField","ArrayField","EnumField","MoneyField","DecimalField","DoubleField","FIELDS_KEY","Symbol","TABLE_NAME_KEY","TABLE_DISPLAY_NAME_KEY","DESCRIPTION_KEY","INDEXES_KEY","Column","target","propertyKey","fields","Reflect","getMetadata","fieldName","type","primary","nullable","defineMetadata","Description","ForeignKey","BaseModel","_client","_extra","getFields","columnToPropertyMap","propertyName","Object","entries","key","getTableName","getDisplayName","getDescription","metadataDescription","getIndexes","hasPrimaryKey","getPrimaryKeyName","getAssociations","f","getPrimaryKey","columns","foreignKeys","fromTableName","fromColumnName","toTableName","toColumnName","indexes","newName","newTableName","create","push","save","pkValue","payload","remove","finalFilter","bulkCreate","datas","batchSize","length","cnt","Math","keys","columnsSet","Set","col","size","c","update","delete","select","limit","sort","aggregate","join","offset","groupBy","count","column","function","Count","alias","toString","toJSON"],"mappings":"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","file":"index.cjs","sourcesContent":["export const SortType = {\n Descending: 'Descending',\n Ascending: 'Ascending',\n} as const;\n\nexport type SortType = (typeof SortType)[keyof typeof SortType];\n\nexport enum AggregateFunction {\n Count = 'Count',\n Sum = 'Sum',\n Avg = 'Avg',\n Min = 'Min',\n Max = 'Max',\n CountDistinct = 'CountDistinct',\n}\n\nexport interface Join {\n table: string;\n on: any;\n}\n\nexport interface Aggregate {\n column: string;\n function: AggregateFunction;\n alias: string;\n}\n\nexport interface GroupBy {\n columns: string[];\n}\n\nexport interface Sort {\n column: string;\n direction: SortType;\n}\n\nexport interface SimilarityOptions {\n threshold: number;\n order?: SortType;\n alias?: string;\n}\n\nexport enum FilterOperation {\n LT = 'LT',\n LTE = 'LTE',\n GT = 'GT',\n GTE = 'GTE',\n EQ = 'EQ',\n NEQ = 'NEQ',\n Between = 'Between',\n In = 'In',\n Contains = 'Contains',\n Overlap = 'Overlap',\n NotIn = 'NotIn',\n Like = 'Like',\n NotLike = 'NotLike',\n ILike = 'ILike',\n NotILike = 'NotILike',\n IsNull = 'IsNull',\n IsNotNull = 'IsNotNull',\n Similarity = 'Similarity',\n SimilarityDistance = 'SimilarityDistance',\n WordSimilarity = 'WordSimilarity',\n WordSimilarityDistance = 'WordSimilarityDistance',\n StrictWordSimilarity = 'StrictWordSimilarity',\n StrictWordSimilarityDistance = 'StrictWordSimilarityDistance',\n EuclideanDistance = 'EuclideanDistance',\n NegativeInnerProduct = 'NegativeInnerProduct',\n CosineDistance = 'CosineDistance',\n}\n\nexport interface FilterItem {\n columnName: string;\n operator: FilterOperation;\n staticValue?: any;\n columnValue?: string;\n simiarityOptions?: SimilarityOptions;\n}\n\nexport type FilterGroup = FilterItem[];\n\nexport type Filter = FilterGroup[];\n","export const ForeignKeyAction = {\n Cascade: 'Cascade',\n Restrict: 'Restrict',\n SetNull: 'SetNull',\n NoAction: 'NoAction',\n SetDefault: 'SetDefault',\n} as const;\n\nexport type ForeignKeyAction = (typeof ForeignKeyAction)[keyof typeof ForeignKeyAction];\n\nexport interface SyntropixDBForeignKey {\n name?: string;\n fromTableName: string;\n fromColumnName: string;\n toTableName: string;\n toColumnName: string;\n onDelete?: ForeignKeyAction;\n onUpdate?: ForeignKeyAction;\n}\n","export const AccessType = {\n None: 'None',\n Read: 'Read',\n Write: 'Write',\n Admin: 'Admin',\n} as const;\n\nexport type AccessType = (typeof AccessType)[keyof typeof AccessType];\n","import { ClientConfig } from '@/core/config';\nimport { SyntropixResponse } from '@/types';\nimport axios, { AxiosError } from 'axios';\nimport { EJSON } from 'bson';\n\nfunction handleError(error: AxiosError) {\n const axiosErr = error as AxiosError<SyntropixResponse<any>>;\n if (axiosErr.response?.data?.status === 'error') {\n throw new Error(axiosErr.response.data.message);\n }\n throw new Error(axiosErr.message);\n}\n\nexport class BaseClient {\n protected config: ClientConfig;\n\n constructor(config: ClientConfig) {\n this.config = config;\n }\n\n private headers() {\n return {\n 'Content-Type': 'application/json',\n Authorization: this.config.apiKey || '',\n };\n }\n\n private url(path: string) {\n if (path.startsWith('/')) {\n path = path.slice(1);\n }\n return `${this.config.baseUrl}${path}`;\n }\n\n public async get<T>(path: string, data: Record<string, any> = {}): Promise<T> {\n try {\n const response = await axios.get(this.url(path), {\n headers: this.headers(),\n params: data,\n });\n const content = EJSON.parse(JSON.stringify(response.data));\n if (content.status !== 'success') {\n throw new Error(content.message as string);\n }\n return content.data as T;\n } catch (error) {\n if (axios.isAxiosError(error)) {\n handleError(error);\n }\n console.error(error);\n throw new Error('Failed to get data: Unknown error');\n }\n }\n\n public async post<T>(path: string, data: Record<string, any> = {}): Promise<T> {\n try {\n const response = await axios.post(this.url(path), data, {\n headers: this.headers(),\n });\n const content = EJSON.parse(JSON.stringify(response.data));\n if (content.status !== 'success') {\n throw new Error(content.message);\n }\n return content.data;\n } catch (error) {\n if (axios.isAxiosError(error)) {\n handleError(error);\n }\n console.error(error);\n throw new Error('Failed to post data: Unknown error');\n }\n }\n}\n","export class ClientConfig {\n public apiKey?: string;\n public baseUrl?: string;\n public timeout?: number;\n public retries?: number;\n\n constructor(config?: any) {\n this.apiKey = config?.apiKey || process.env.SYNTROPIX_API_KEY;\n this.baseUrl = config?.baseUrl || process.env.SYNTROPIX_API_URL;\n this.timeout = config?.timeout || process.env.SYNTROPIX_API_TIMEOUT;\n this.retries = config?.retries || process.env.SYNTROPIX_API_RETRIES;\n\n if (!this.apiKey || !this.baseUrl) {\n throw new Error('API key and base URL are required');\n }\n\n if (!this.timeout) {\n this.timeout = 10000;\n }\n\n if (!this.retries) {\n this.retries = 3;\n }\n\n if (!this.baseUrl.endsWith('/')) {\n this.baseUrl += '/';\n }\n }\n}\n","import { Filter, FilterGroup, FilterItem, FilterOperation, SimilarityOptions } from '@/types';\n\nexport const AND = (...conditions: FilterItem[]): FilterGroup => conditions;\n\nexport const OR = (...conditions: FilterGroup[]): Filter => conditions;\n\nexport const EQ = (field: string, value: any): FilterItem => ({\n columnName: field,\n operator: FilterOperation.EQ,\n staticValue: value,\n});\n\nexport const NE = (field: string, value: any): FilterItem => ({\n columnName: field,\n operator: FilterOperation.NEQ,\n staticValue: value,\n});\n\nexport const GT = (field: string, value: any): FilterItem => ({\n columnName: field,\n operator: FilterOperation.GT,\n staticValue: value,\n});\n\nexport const GTE = (field: string, value: any): FilterItem => ({\n columnName: field,\n operator: FilterOperation.GTE,\n staticValue: value,\n});\n\nexport const LT = (field: string, value: any): FilterItem => ({\n columnName: field,\n operator: FilterOperation.LT,\n staticValue: value,\n});\n\nexport const LTE = (field: string, value: any): FilterItem => ({\n columnName: field,\n operator: FilterOperation.LTE,\n staticValue: value,\n});\n\nexport const IN = (field: string, values: any[]): FilterItem => ({\n columnName: field,\n operator: FilterOperation.In,\n staticValue: values,\n});\n\nexport const CONTAINS = (field: string, value: any): FilterItem => ({\n columnName: field,\n operator: FilterOperation.Contains,\n staticValue: value,\n});\n\nexport const OVERLAP = (field: string, value: any): FilterItem => ({\n columnName: field,\n operator: FilterOperation.Overlap,\n staticValue: value,\n});\n\nexport const I_LIKE = (field: string, pattern: string): FilterItem => ({\n columnName: field,\n operator: FilterOperation.ILike,\n staticValue: pattern,\n});\n\nexport const NOT_I_LIKE = (field: string, pattern: string): FilterItem => ({\n columnName: field,\n operator: FilterOperation.NotILike,\n staticValue: pattern,\n});\n\nexport const NOT_IN = (field: string, values: any[]): FilterItem => ({\n columnName: field,\n operator: FilterOperation.NotIn,\n staticValue: values,\n});\n\nexport const LIKE = (field: string, pattern: string): FilterItem => ({\n columnName: field,\n operator: FilterOperation.Like,\n staticValue: pattern,\n});\n\nexport const NOT_LIKE = (field: string, pattern: string): FilterItem => ({\n columnName: field,\n operator: FilterOperation.NotLike,\n staticValue: pattern,\n});\n\nexport const IS_NULL = (field: string): FilterItem => ({\n columnName: field,\n operator: FilterOperation.IsNull,\n});\n\nexport const IS_NOT_NULL = (field: string): FilterItem => ({\n columnName: field,\n operator: FilterOperation.IsNotNull,\n});\n\nexport const BETWEEN = (field: string, min: any, max: any): FilterItem => ({\n columnName: field,\n operator: FilterOperation.Between,\n staticValue: [min, max],\n});\n\n// Column comparison (compare two columns)\nexport const EQ_COL = (field: string, otherField: string): FilterItem => ({\n columnName: field,\n operator: FilterOperation.EQ,\n columnValue: otherField,\n});\n\nexport const NE_COL = (field: string, otherField: string): FilterItem => ({\n columnName: field,\n operator: FilterOperation.NEQ,\n columnValue: otherField,\n});\n\nexport const GT_COL = (field: string, otherField: string): FilterItem => ({\n columnName: field,\n operator: FilterOperation.GT,\n columnValue: otherField,\n});\n\nexport const GTE_COL = (field: string, otherField: string): FilterItem => ({\n columnName: field,\n operator: FilterOperation.GTE,\n columnValue: otherField,\n});\n\nexport const LT_COL = (field: string, otherField: string): FilterItem => ({\n columnName: field,\n operator: FilterOperation.LT,\n columnValue: otherField,\n});\n\nexport const LTE_COL = (field: string, otherField: string): FilterItem => ({\n columnName: field,\n operator: FilterOperation.LTE,\n columnValue: otherField,\n});\n\n// Similarity operations\nexport const SIMILARITY = (field: string, value: any, options: SimilarityOptions): FilterItem => ({\n columnName: field,\n operator: FilterOperation.Similarity,\n staticValue: value,\n simiarityOptions: options,\n});\n\nexport const SIMILARITY_DISTANCE = (field: string, value: any, options: SimilarityOptions): FilterItem => ({\n columnName: field,\n operator: FilterOperation.SimilarityDistance,\n staticValue: value,\n simiarityOptions: options,\n});\n\nexport const WORD_SIMILARITY = (field: string, value: any, options: SimilarityOptions): FilterItem => ({\n columnName: field,\n operator: FilterOperation.WordSimilarity,\n staticValue: value,\n simiarityOptions: options,\n});\n\nexport const WORD_SIMILARITY_DISTANCE = (field: string, value: any, options: SimilarityOptions): FilterItem => ({\n columnName: field,\n operator: FilterOperation.WordSimilarityDistance,\n staticValue: value,\n simiarityOptions: options,\n});\n\nexport const STRICT_WORD_SIMILARITY = (field: string, value: any, options: SimilarityOptions): FilterItem => ({\n columnName: field,\n operator: FilterOperation.StrictWordSimilarity,\n staticValue: value,\n simiarityOptions: options,\n});\n\nexport const STRICT_WORD_SIMILARITY_DISTANCE = (field: string, value: any, options: SimilarityOptions): FilterItem => ({\n columnName: field,\n operator: FilterOperation.StrictWordSimilarityDistance,\n staticValue: value,\n simiarityOptions: options,\n});\n\nexport const EUCLIDEAN_DISTANCE = (field: string, value: any, options: SimilarityOptions): FilterItem => ({\n columnName: field,\n operator: FilterOperation.EuclideanDistance,\n staticValue: value,\n simiarityOptions: options,\n});\n\nexport const NEGATIVE_INNER_PRODUCT = (field: string, value: any, options: SimilarityOptions): FilterItem => ({\n columnName: field,\n operator: FilterOperation.NegativeInnerProduct,\n staticValue: value,\n simiarityOptions: options,\n});\n\nexport const COSINE_DISTANCE = (field: string, value: any, options: SimilarityOptions): FilterItem => ({\n columnName: field,\n operator: FilterOperation.CosineDistance,\n staticValue: value,\n simiarityOptions: options,\n});\n\n// Helper function for values (backward compatibility)\nexport const Value = (value: any) => value;\n\n// Helper function for wrapping filter\nexport function FilterWrapper(filter: Filter | FilterGroup | FilterItem | undefined): Filter | undefined {\n if (filter === undefined) {\n return undefined;\n }\n if (!Array.isArray(filter)) {\n return OR(AND(filter));\n } else if (!filter.every((item) => Array.isArray(item))) {\n return OR(filter);\n } else {\n return filter;\n }\n}\n","import { ClientConfig } from '@/core/config';\nimport { FilterWrapper } from '@/core/filter-builder';\nimport { DeleteDataDto, InsertDto, QueryDto, UpdateDto } from '@/types';\nimport { BaseClient } from './base-client';\n\nexport class DataClient {\n private client: BaseClient;\n\n constructor(config: ClientConfig = new ClientConfig()) {\n this.client = new BaseClient(config);\n }\n\n async insertData(data: InsertDto): Promise<any> {\n return await this.client.post<any>('/insert', data);\n }\n\n async insertOne(data: InsertDto): Promise<any> {\n return await this.client.post<any>('/insert/one', data);\n }\n\n async updateByPrimaryKey(pk: string, data: UpdateDto): Promise<any> {\n return await this.client.post<any>(`/update/${pk}`, data);\n }\n\n async queryOne(data: QueryDto, model?: any): Promise<any> {\n data.query.filter = FilterWrapper(data.query.filter);\n const response = await this.client.post<any>('/query', { One: data });\n if (model !== undefined) {\n return new model(response);\n }\n return response;\n }\n\n async queryMany(data: QueryDto, model?: any): Promise<any> {\n data.query.filter = FilterWrapper(data.query.filter);\n const response = await this.client.post<any[]>('/query', { Many: data });\n if (model !== undefined) {\n // In TypeScript, we would typically use a validation library or manual validation\n // For now, we'll return the data as-is, but in a real implementation you might want to use\n // a library like class-validator or zod for validation\n return response.map((item: any) => new model(item));\n }\n return response;\n }\n\n async updateData(data: UpdateDto): Promise<any> {\n return await this.client.post<any>('/update', data);\n }\n\n async deleteData(data: DeleteDataDto): Promise<any> {\n return await this.client.post<any>('/delete', data);\n }\n}\n","import { ClientConfig } from '@/core/config';\nimport {\n TableAddColumnDto,\n TableCreateDto,\n TableCreateResponse,\n TableDropColumnDto,\n TableDropDto,\n TableGetListDto,\n TableGetSchemaDto,\n TableListResponse,\n TableModifyColumnDto,\n TableRenameDto,\n TableSchemaResponse,\n TableTruncateDto,\n} from '@/types';\nimport { BaseClient } from './base-client';\n\nexport class TableClient {\n private client: BaseClient;\n\n constructor(config: ClientConfig = new ClientConfig()) {\n this.client = new BaseClient(config);\n }\n\n async createTable(data: TableCreateDto): Promise<TableCreateResponse> {\n return await this.client.post<TableCreateResponse>('/table/create', data);\n }\n\n async dropTable(data: TableDropDto): Promise<any> {\n return await this.client.post<any>('/table/drop', data);\n }\n\n async renameTable(data: TableRenameDto): Promise<any> {\n return await this.client.post<any>('/table/rename', data);\n }\n\n async truncateTable(data: TableTruncateDto): Promise<any> {\n return await this.client.post<any>('/table/truncate', data);\n }\n\n async addColumn(data: TableAddColumnDto): Promise<any> {\n return await this.client.post<any>('/table/column/add', data);\n }\n\n async dropColumn(data: TableDropColumnDto): Promise<any> {\n return await this.client.post<any>('/table/column/drop', data);\n }\n\n async modifyColumn(data: TableModifyColumnDto): Promise<any> {\n return await this.client.post<any>('/table/column/modify', data);\n }\n\n async getTableSchema(data: TableGetSchemaDto): Promise<TableSchemaResponse> {\n return await this.client.get<TableSchemaResponse>('/table/schema', data);\n }\n\n async getTableList(data: TableGetListDto): Promise<TableListResponse> {\n return await this.client.get<TableListResponse>('/table/list', data);\n }\n}\n","import { ClientConfig } from '@/core/config';\nimport { DataClient } from './data-client';\nimport { TableClient } from './table-client';\n\nexport class SyntropixClient {\n private config: ClientConfig;\n private _tableClient?: TableClient;\n private _dataClient?: DataClient;\n\n constructor(config: ClientConfig = new ClientConfig()) {\n this.config = config;\n }\n\n get table(): TableClient {\n if (!this._tableClient) {\n this._tableClient = new TableClient(this.config);\n }\n return this._tableClient;\n }\n\n get data(): DataClient {\n if (!this._dataClient) {\n this._dataClient = new DataClient(this.config);\n }\n return this._dataClient;\n }\n}\n","import { ArrayDataTypeSchema, ArrayType, DecimalType, EnumType, MoneyType, StringType, VectorType } from '@/types';\n\nexport const ArrayDataType = {\n String: (maxLength: number): StringType => ({ String: maxLength }),\n Decimal: (precision: number, scale: number): DecimalType => ({\n Decimal: precision && scale ? [precision, scale] : null,\n }),\n Text: 'Text',\n Integer: 'Integer',\n BigInteger: 'BigInteger',\n Double: 'Double',\n DateTime: 'DateTime',\n Timestamp: 'Timestamp',\n Date: 'Date',\n Boolean: 'Boolean',\n Money: (precision: number, scale: number): MoneyType => ({ Money: precision && scale ? [precision, scale] : null }),\n Uuid: 'Uuid',\n Enum: (name: string, variants: string[]): EnumType => ({ Enum: { name, variants } }),\n Json: 'Json',\n} as const;\n\nexport const ColumnDataType = {\n Integer: 'Integer',\n String: (maxLength: number): StringType => ({ String: maxLength }),\n Text: 'Text',\n Boolean: 'Boolean',\n DateTime: 'DateTime',\n Timestamp: 'Timestamp',\n Date: 'Date',\n Json: 'Json',\n Uuid: 'Uuid',\n Double: 'Double',\n\n Vector: (dimensions: number): VectorType => ({ Vector: dimensions }),\n Array: (dataType: ArrayDataTypeSchema): ArrayType => ({ Array: dataType }),\n Enum: (name: string, variants: string[]): EnumType => ({ Enum: { name, variants } }),\n Money: (precision: number, scale: number): MoneyType => ({ Money: precision && scale ? [precision, scale] : null }),\n Decimal: (precision: number, scale: number): DecimalType => ({\n Decimal: precision && scale ? [precision, scale] : null,\n }),\n} as const;\n","import {\n AccessType,\n ArrayDataTypeSchema,\n ColumnCreateDto,\n ColumnDataTypeSchema,\n FieldOptions,\n ForeignKeyAction,\n ForeignKeyFieldOptions,\n} from '@/types';\nimport { ColumnDataType } from './data-type';\n\nexport abstract class Field {\n name: string = '';\n displayName: string = '';\n description: string = '';\n columnType: ColumnDataTypeSchema;\n isPrimaryKey: boolean = false;\n isNullable: boolean = false;\n autoIncrement: boolean = false;\n default?: any;\n defaultAccess?: AccessType;\n\n constructor(columnType: ColumnDataTypeSchema, options: FieldOptions = {}) {\n this.columnType = columnType;\n this.name = options.name?.toLowerCase() || '';\n this.displayName = options.displayName || '';\n this.description = options.description || '';\n this.isPrimaryKey = options.isPrimaryKey || false;\n this.isNullable = options.isNullable || false;\n this.autoIncrement = options.autoIncrement || false;\n this.default = options.default;\n this.defaultAccess = options.defaultAccess;\n }\n\n intoColumnCreateDto(): ColumnCreateDto {\n return {\n name: this.name,\n displayName: this.displayName,\n columnType: this.columnType,\n description: this.description,\n isPrimaryKey: this.isPrimaryKey,\n isNullable: this.isNullable,\n autoIncrement: this.autoIncrement,\n default: this.default,\n defaultAccess: this.defaultAccess,\n };\n }\n}\n\nexport class ForeignKeyField extends Field {\n tableName: string;\n columnName: string;\n onDelete: ForeignKeyAction;\n onUpdate: ForeignKeyAction;\n\n constructor(\n columnType: ColumnDataTypeSchema,\n tableName: string,\n columnName: string,\n options: ForeignKeyFieldOptions = {},\n ) {\n super(columnType, options);\n this.tableName = tableName;\n this.columnName = columnName;\n this.onDelete = options.onDelete || ForeignKeyAction.Cascade;\n this.onUpdate = options.onUpdate || ForeignKeyAction.Cascade;\n }\n}\n\nexport class StringField extends Field {\n constructor(maxLength: number, options: FieldOptions = {}) {\n super(ColumnDataType.String(maxLength), options);\n }\n}\n\nexport class TextField extends Field {\n constructor(options: FieldOptions = {}) {\n super(ColumnDataType.Text, options);\n }\n}\n\nexport class IntegerField extends Field {\n constructor(options: FieldOptions = {}) {\n super(ColumnDataType.Integer, options);\n }\n}\n\nexport class BooleanField extends Field {\n constructor(options: FieldOptions = {}) {\n super(ColumnDataType.Boolean, options);\n }\n}\n\nexport class DateTimeField extends Field {\n constructor(options: FieldOptions = {}) {\n super(ColumnDataType.DateTime, options);\n }\n}\n\nexport class TimestampField extends Field {\n constructor(options: FieldOptions = {}) {\n super(ColumnDataType.Timestamp, options);\n }\n}\n\nexport class DateField extends Field {\n constructor(options: FieldOptions = {}) {\n super(ColumnDataType.Date, options);\n }\n}\n\nexport class JsonField extends Field {\n constructor(options: FieldOptions = {}) {\n super(ColumnDataType.Json, options);\n }\n}\n\nexport class UuidField extends Field {\n constructor(options: FieldOptions = {}) {\n super(ColumnDataType.Uuid, options);\n }\n}\n\nexport class VectorField extends Field {\n constructor(dimensions: number, options: FieldOptions = {}) {\n super(ColumnDataType.Vector(dimensions), options);\n }\n}\n\nexport class ArrayField extends Field {\n constructor(dataType: ArrayDataTypeSchema, options: FieldOptions = {}) {\n super(ColumnDataType.Array(dataType), options);\n }\n}\n\nexport class EnumField extends Field {\n constructor(name: string, variants: string[], options: FieldOptions = {}) {\n super(ColumnDataType.Enum(name, variants), options);\n }\n}\n\nexport class MoneyField extends Field {\n constructor(precision: number, scale: number, options: FieldOptions = {}) {\n super(ColumnDataType.Money(precision, scale), options);\n }\n}\n\nexport class DecimalField extends Field {\n constructor(precision: number, scale: number, options: FieldOptions = {}) {\n super(ColumnDataType.Decimal(precision, scale), options);\n }\n}\n\nexport class DoubleField extends Field {\n constructor(options: FieldOptions = {}) {\n super(ColumnDataType.Double, options);\n }\n}\n","import {\n Aggregate,\n AggregateFunction,\n ColumnCreateOptions,\n ColumnDataTypeSchema,\n Filter,\n ForeignKeyAction,\n GroupBy,\n Index,\n Join,\n Sort,\n SyntropixDBForeignKey,\n TableCreateResponse,\n TableSchemaResponse,\n} from '@/types';\nimport 'reflect-metadata';\nimport { SyntropixClient } from './client';\nimport { ColumnDataType } from './data-type';\nimport { Field, ForeignKeyField, IntegerField } from './field';\nimport { AND, EQ, GTE, OR, Value } from './filter-builder';\n\n// Metadata keys\nconst FIELDS_KEY = Symbol('fields');\nconst TABLE_NAME_KEY = Symbol('tableName');\nconst TABLE_DISPLAY_NAME_KEY = Symbol('displayTableName');\nconst DESCRIPTION_KEY = Symbol('description');\nconst INDEXES_KEY = Symbol('indexes');\n\n// Column decorator\nexport function Column(options: ColumnCreateOptions = {}) {\n return function (target: any, propertyKey: string) {\n const fields = Reflect.getMetadata(FIELDS_KEY, target.constructor) || {};\n\n const fieldName = options.name || propertyKey.toLowerCase();\n const columnType = options.type || ColumnDataType.Text;\n\n const field = new (class extends Field {\n constructor() {\n super(columnType, {\n name: fieldName,\n displayName: options.displayName,\n description: options.description,\n isPrimaryKey: options.primary,\n isNullable: options.nullable,\n autoIncrement: options.autoIncrement,\n default: options.default,\n defaultAccess: options.defaultAccess,\n });\n }\n })();\n\n fields[propertyKey] = field;\n Reflect.defineMetadata(FIELDS_KEY, fields, target.constructor);\n };\n}\n\n// Description decorator\nexport function Description(description: string) {\n return function (target: any) {\n Reflect.defineMetadata(DESCRIPTION_KEY, description, target);\n };\n}\n\n// ForeignKey decorator\nexport function ForeignKey(\n tableName: string,\n columnName: string,\n options: {\n type?: ColumnDataTypeSchema;\n displayName?: string;\n name?: string;\n onDelete?: ForeignKeyAction;\n onUpdate?: ForeignKeyAction;\n description?: string;\n nullable?: boolean;\n default?: any;\n } = {},\n) {\n return function (target: any, propertyKey: string) {\n const fields = Reflect.getMetadata(FIELDS_KEY, target.constructor) || {};\n\n const field = new ForeignKeyField(options.type || ColumnDataType.Integer, tableName, columnName, {\n displayName: options.displayName,\n description: options.description,\n isNullable: options.nullable,\n default: options.default,\n onDelete: options.onDelete,\n onUpdate: options.onUpdate,\n });\n field.name = options.name || propertyKey.toLowerCase();\n\n fields[propertyKey] = field;\n Reflect.defineMetadata(FIELDS_KEY, fields, target.constructor);\n };\n}\n\nexport class BaseModel {\n private _client?: SyntropixClient;\n private _extra: Record<string, any> = {};\n\n constructor(data: Record<string, any> = {}) {\n const fields = this.getFields();\n\n // Create a mapping from column names to property names\n const columnToPropertyMap: Record<string, string> = {};\n for (const [propertyName, field] of Object.entries(fields)) {\n columnToPropertyMap[field.name] = propertyName;\n }\n\n for (const [key, value] of Object.entries(data)) {\n // Check if key is a property name\n if (key in fields) {\n (this as any)[key] = value;\n }\n // Check if key is a column name\n else if (key in columnToPropertyMap) {\n (this as any)[columnToPropertyMap[key]] = value;\n }\n // Otherwise, store in _extra\n else {\n this._extra[key] = value;\n }\n }\n }\n\n // Static metadata getters\n protected static getTableName(): string {\n const tableName = Reflect.getMetadata(TABLE_NAME_KEY, this);\n if (tableName) return tableName;\n\n // Check for static tableName property\n if ('tableName' in this && typeof (this as any).tableName === 'string') {\n return (this as any).tableName;\n }\n\n return this.name.toLowerCase();\n }\n\n protected static getDisplayName(): string {\n const displayName = Reflect.getMetadata(TABLE_DISPLAY_NAME_KEY, this);\n if (displayName) return displayName;\n\n // Check for static displayName property\n if ('displayName' in this && typeof (this as any).displayName === 'string') {\n return (this as any).displayName;\n }\n\n return this.name;\n }\n\n public static getDescription(): string {\n const metadataDescription = Reflect.getMetadata(DESCRIPTION_KEY, this);\n if (metadataDescription) return metadataDescription;\n\n // Check for static description property as fallback\n if ('description' in this && typeof (this as any).description === 'string') {\n return (this as any).description;\n }\n\n return '';\n }\n\n protected static getIndexes(): Index[] {\n return Reflect.getMetadata(INDEXES_KEY, this) || [];\n }\n\n protected static getFields(): Record<string, Field> {\n const fields = Reflect.getMetadata(FIELDS_KEY, this) || {};\n\n // Check if there's a primary key\n let hasPrimaryKey = false;\n for (const field of Object.values(fields) as Field[]) {\n if (field.isPrimaryKey) {\n hasPrimaryKey = true;\n field.isNullable = false;\n break;\n }\n }\n\n // If no primary key, add default 'id' field\n if (!hasPrimaryKey && !('id' in fields)) {\n fields['id'] = new IntegerField({\n isPrimaryKey: true,\n isNullable: false,\n autoIncrement: true,\n description: 'Primary key',\n });\n fields['id'].name = 'id';\n }\n\n return fields;\n }\n\n protected static getPrimaryKeyName(): string {\n const fields = this.getFields();\n for (const [key, field] of Object.entries(fields)) {\n if (field.isPrimaryKey) {\n return field.name;\n }\n }\n return 'id';\n }\n\n protected static getAssociations(): ForeignKeyField[] {\n const fields = this.getFields();\n return Object.values(fields).filter((f) => f instanceof ForeignKeyField) as ForeignKeyField[];\n }\n\n // Instance metadata getters\n protected getFields(): Record<string, Field> {\n return (this.constructor as typeof BaseModel).getFields();\n }\n\n protected getTableName(): string {\n return (this.constructor as typeof BaseModel).getTableName();\n }\n\n protected getDisplayName(): string {\n return (this.constructor as typeof BaseModel).getDisplayName();\n }\n\n protected getPrimaryKeyName(): string {\n return (this.constructor as typeof BaseModel).getPrimaryKeyName();\n }\n\n protected getPrimaryKey(): Field | undefined {\n const fields = this.getFields();\n for (const field of Object.values(fields)) {\n if (field.isPrimaryKey) {\n return field;\n }\n }\n return undefined;\n }\n\n // Client getter\n protected get client(): SyntropixClient {\n if (!this._client) {\n this._client = new SyntropixClient();\n }\n return this._client;\n }\n\n // Table operations\n static async createTable(client: SyntropixClient = new SyntropixClient()): Promise<TableCreateResponse> {\n const fields = this.getFields();\n const columns = Object.values(fields).map((f) => f.intoColumnCreateDto());\n const foreignKeys: SyntropixDBForeignKey[] = this.getAssociations().map((f) => ({\n fromTableName: this.getTableName(),\n fromColumnName: f.name,\n toTableName: f.tableName,\n toColumnName: f.columnName,\n onDelete: f.onDelete,\n onUpdate: f.onUpdate,\n }));\n const indexes = this.getIndexes();\n\n return await client.table.createTable({\n name: this.getTableName(),\n displayName: this.getDisplayName(),\n description: this.getDescription() || 'No description',\n columns,\n foreignKeys,\n indexes,\n });\n }\n\n static async dropTable(client: SyntropixClient = new SyntropixClient()): Promise<any> {\n return await client.table.dropTable({ tableName: this.getTableName() });\n }\n\n static async renameTable(newName: string, client: SyntropixClient = new SyntropixClient()): Promise<any> {\n return await client.table.renameTable({\n tableName: this.getTableName(),\n newTableName: newName,\n });\n }\n\n static async truncateTable(client: SyntropixClient = new SyntropixClient()): Promise<any> {\n return await client.table.truncateTable({ tableName: this.getTableName() });\n }\n\n static async getTableSchema(client: SyntropixClient = new SyntropixClient()): Promise<TableSchemaResponse> {\n return await client.table.getTableSchema({ tableName: this.getTableName() });\n }\n\n // Data operations\n static async create<T extends BaseModel>(\n this: new (data?: any) => T,\n data: Record<string, any>,\n client: SyntropixClient = new SyntropixClient(),\n ): Promise<any> {\n const model = this as any as typeof BaseModel;\n const fields = model.getFields();\n const columns: string[] = [];\n const values: any[] = [];\n\n for (const [key, value] of Object.entries(data)) {\n if (key in fields) {\n columns.push(fields[key].name);\n values.push(value);\n } else {\n throw new Error(`Invalid field: ${key}`);\n }\n }\n\n return client.data.insertOne({\n tableName: model.getTableName(),\n data: {\n columns,\n values: [values],\n },\n });\n }\n\n async save(client: SyntropixClient = new SyntropixClient()): Promise<any> {\n const pk = this.getPrimaryKey();\n const pkValue = (this as any)[this.getPrimaryKeyName()];\n const fields = this.getFields();\n\n if (pkValue === null || pkValue === undefined) {\n const data: Record<string, any> = {};\n for (const [key, field] of Object.entries(fields)) {\n data[key] = (this as any)[key];\n }\n return (this.constructor as typeof BaseModel).create(data, client);\n }\n\n const columns: string[] = [];\n const values: any[] = [];\n for (const [key, field] of Object.entries(fields)) {\n if (field.name !== pk?.name) {\n columns.push(field.name);\n values.push((this as any)[key]);\n }\n }\n\n return (\n client ||\n this.client.data.updateByPrimaryKey(pkValue, {\n tableName: this.getTableName(),\n payload: {\n filter: [[]],\n columns,\n values,\n },\n })\n );\n }\n\n async remove(filter?: Filter, _client?: SyntropixClient | null): Promise<number> {\n const pk = this.getPrimaryKey();\n const pkValue = (this as any)[this.getPrimaryKeyName()];\n const finalFilter = filter || OR(AND(EQ(pk?.name || 'id', pkValue)));\n\n return (\n _client ||\n this.client.data.deleteData({\n tableName: this.getTableName(),\n payload: {\n filter: finalFilter,\n },\n })\n );\n }\n\n static async bulkCreate<T extends BaseModel>(\n this: new (data?: any) => T,\n datas: Record<string, any>[],\n batchSize: number = 32,\n _client?: SyntropixClient | null,\n ): Promise<number> {\n if (!datas.length) return 0;\n if (batchSize <= 0) throw new Error('Batch size must be greater than 0');\n\n const model = this as any as typeof BaseModel;\n const fields = model.getFields();\n let cnt = 0;\n batchSize = Math.min(batchSize, 128);\n\n const columns = Object.keys(datas[0]);\n const columnsSet = new Set(columns);\n\n for (const col of columns) {\n if (!(col in fields)) {\n throw new Error(`Invalid field: ${col}`);\n }\n }\n\n let values: any[][] = [];\n const client = _client || new SyntropixClient();\n\n for (const data of datas) {\n if (columnsSet.size !== new Set(Object.keys(data)).size || !columns.every((c) => c in data)) {\n throw new Error('All data must have the same columns');\n }\n\n values.push(columns.map((c) => data[c]));\n\n if (values.length === batchSize) {\n cnt += await client.data.insertData({\n tableName: model.getTableName(),\n data: { columns: columns.map((c) => fields[c].name), values },\n });\n values = [];\n }\n }\n\n if (values.length > 0) {\n cnt += await client.data.insertData({\n tableName: model.getTableName(),\n data: { columns: columns.map((c) => fields[c].name), values },\n });\n }\n\n return cnt;\n }\n\n static async update<T extends BaseModel>(\n this: new (data?: any) => T,\n filter: Filter,\n data: Record<string, any>,\n _client?: SyntropixClient | null,\n ): Promise<number> {\n const model = this as any as typeof BaseModel;\n const fields = model.getFields();\n const columns = Object.keys(data);\n\n if (!columns.length) {\n throw new Error('No columns to update');\n }\n\n for (const col of columns) {\n if (!(col in fields)) {\n throw new Error(`Invalid field: ${col}`);\n }\n }\n\n const values = columns.map((c) => data[c]);\n const client = _client || new SyntropixClient();\n\n return client.data.updateData({\n tableName: model.getTableName(),\n payload: {\n filter,\n columns: columns.map((c) => fields[c].name),\n values,\n },\n });\n }\n\n static async delete<T extends BaseModel>(\n this: new (data?: any) => T,\n filter: Filter,\n _client?: SyntropixClient | null,\n ): Promise<number> {\n const model = this as any as typeof BaseModel;\n const client = _client || new SyntropixClient();\n\n return client.data.deleteData({\n tableName: model.getTableName(),\n payload: { filter },\n });\n }\n\n static async get<T extends BaseModel>(\n this: new (data?: any) => T,\n filter: Filter,\n select?: string[],\n _client?: SyntropixClient | null,\n ): Promise<T> {\n const model = this as any as typeof BaseModel;\n const fields = model.getFields();\n const client = _client || new SyntropixClient();\n\n const data = await client.data.queryOne({\n tableName: model.getTableName(),\n query: {\n filter,\n select: select || Object.values(fields).map((f) => f.name),\n limit: 1,\n },\n });\n\n return new this(data);\n }\n\n static async filter<T extends BaseModel>(\n this: new (data?: any) => T,\n options: {\n filter: Filter;\n sort?: Sort[];\n aggregate?: Aggregate[];\n join?: Join;\n limit?: number;\n offset?: number;\n groupBy?: GroupBy;\n select?: string[];\n _client?: SyntropixClient | null;\n },\n ): Promise<T[]> {\n const model = this as any as typeof BaseModel;\n const client = options._client || new SyntropixClient();\n\n const data = await client.data.queryMany({\n tableName: model.getTableName(),\n query: {\n filter: options.filter,\n sort: options.sort,\n aggregate: options.aggregate,\n join: options.join ? [options.join] : undefined,\n limit: options.limit,\n offset: options.offset,\n groupBy: options.groupBy,\n select: options.select,\n },\n });\n\n return data.map((item: any) => new this(item));\n }\n\n static async count<T extends BaseModel>(\n this: new (data?: any) => T,\n options: {\n filter?: Filter;\n join?: Join;\n groupBy?: GroupBy;\n _client?: SyntropixClient | null;\n } = {},\n ): Promise<number> {\n const model = this as any as typeof BaseModel;\n const client = options._client || new SyntropixClient();\n\n const data = await client.data.queryMany({\n tableName: model.getTableName(),\n query: {\n filter: options.filter || [[GTE('id', Value(0))]],\n aggregate: [\n {\n column: 'id',\n function: AggregateFunction.Count,\n alias: 'count',\n },\n ],\n join: options.join ? [options.join] : undefined,\n limit: 1,\n offset: 0,\n groupBy: options.groupBy,\n select: ['count'],\n },\n });\n\n return data.length > 0 ? data[0].count : 0;\n }\n\n toString(): string {\n const fields = this.getFields();\n const data: Record<string, any> = {};\n\n for (const key of Object.keys(fields)) {\n const value = (this as any)[key];\n if (!(value instanceof Field)) {\n data[key] = value;\n }\n }\n\n data._extra = this._extra;\n return `${this.constructor.name}(${JSON.stringify(data).slice(1, -1)})`;\n }\n\n toJSON(): Record<string, any> {\n const fields = this.getFields();\n const data: Record<string, any> = {};\n\n for (const key of Object.keys(fields)) {\n data[key] = (this as any)[key];\n }\n\n return { ...data, ...this._extra };\n }\n}\n"]}