@syntropix/database 0.2.2 → 0.2.4

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.
package/dist/index.cjs CHANGED
@@ -728,6 +728,7 @@ var TABLE_NAME_KEY = Symbol("tableName");
728
728
  var TABLE_DISPLAY_NAME_KEY = Symbol("displayTableName");
729
729
  var DESCRIPTION_KEY = Symbol("description");
730
730
  var INDEXES_KEY = Symbol("indexes");
731
+ var PATH_KEY = Symbol("path");
731
732
  function Column(options = {}) {
732
733
  return function(target, propertyKey) {
733
734
  const fields = Reflect.getMetadata(FIELDS_KEY, target.constructor) || {};
@@ -812,7 +813,7 @@ var BaseModel = class {
812
813
  if ("displayName" in this && typeof this.displayName === "string") {
813
814
  return this.displayName;
814
815
  }
815
- return this.name;
816
+ return null;
816
817
  }
817
818
  static getDescription() {
818
819
  const metadataDescription = Reflect.getMetadata(DESCRIPTION_KEY, this);
@@ -825,6 +826,9 @@ var BaseModel = class {
825
826
  static getIndexes() {
826
827
  return Reflect.getMetadata(INDEXES_KEY, this) || [];
827
828
  }
829
+ static getPath() {
830
+ return Reflect.getMetadata(PATH_KEY, this) || "";
831
+ }
828
832
  static getFields() {
829
833
  const fields = Reflect.getMetadata(FIELDS_KEY, this) || {};
830
834
  let hasPrimaryKey = false;
@@ -901,13 +905,15 @@ var BaseModel = class {
901
905
  onUpdate: f.onUpdate
902
906
  }));
903
907
  const indexes = this.getIndexes();
908
+ const path = this.getPath();
904
909
  return await client.table.createTable({
905
910
  name: this.getTableName(),
906
- displayName: this.getDisplayName(),
907
- description: this.getDescription() || "No description",
911
+ displayName: this.getDisplayName() || void 0,
912
+ description: this.getDescription() || "",
908
913
  columns,
909
914
  foreignKeys,
910
- indexes
915
+ indexes,
916
+ path
911
917
  });
912
918
  }
913
919
  static async dropTable(client = new SyntropixClient()) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/types/model/access.ts","../src/types/model/db-index.ts","../src/types/model/filter.ts","../src/types/model/foreign-key.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":["AccessType","None","Read","Write","Admin","IndexType","Gin","GinTrgmOps","IvfflatL2Ops","InfflatCosineOps","InfflatIpOps","SortType","Descending","Ascending","AggregateFunction","FilterOperation","ForeignKeyAction","Cascade","Restrict","SetNull","NoAction","SetDefault","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":["import { Filter } from './filter';\n\nexport 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\nexport interface SyntropixDBRowAccess {\n read?: Filter;\n write?: Filter;\n}\n\nexport interface SyntropixDBAccess {\n tableAccess: AccessType;\n rowAccess?: Record<string, SyntropixDBRowAccess>;\n columnAccess: Record<string, AccessType>;\n createdAt: Date;\n updatedAt: Date;\n}\n","export const IndexType = {\n Gin: 'Gin',\n GinTrgmOps: 'GinTrgmOps',\n IvfflatL2Ops: 'IvfflatL2Ops',\n InfflatCosineOps: 'InfflatCosineOps',\n InfflatIpOps: 'InfflatIpOps',\n} as const;\n\nexport type IndexType = (typeof IndexType)[keyof typeof IndexType];\n\nexport interface SyntropixDBIndex {\n name?: string;\n unique: boolean;\n nullsNotDistinct: boolean;\n columns: string[];\n indexType: IndexType;\n}\n","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","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 Join,\n Sort,\n SyntropixDBForeignKey,\n SyntropixDBIndex,\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(): SyntropixDBIndex[] {\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"]}
1
+ {"version":3,"sources":["../src/types/model/access.ts","../src/types/model/db-index.ts","../src/types/model/filter.ts","../src/types/model/foreign-key.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":["AccessType","None","Read","Write","Admin","IndexType","Gin","GinTrgmOps","IvfflatL2Ops","InfflatCosineOps","InfflatIpOps","SortType","Descending","Ascending","AggregateFunction","FilterOperation","ForeignKeyAction","Cascade","Restrict","SetNull","NoAction","SetDefault","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","PATH_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","getPath","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":["import { Filter } from './filter';\n\nexport 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\nexport interface SyntropixDBRowAccess {\n read?: Filter;\n write?: Filter;\n}\n\nexport interface SyntropixDBAccess {\n tableAccess: AccessType;\n rowAccess?: Record<string, SyntropixDBRowAccess>;\n columnAccess: Record<string, AccessType>;\n createdAt: Date;\n updatedAt: Date;\n}\n","export const IndexType = {\n Gin: 'Gin',\n GinTrgmOps: 'GinTrgmOps',\n IvfflatL2Ops: 'IvfflatL2Ops',\n InfflatCosineOps: 'InfflatCosineOps',\n InfflatIpOps: 'InfflatIpOps',\n} as const;\n\nexport type IndexType = (typeof IndexType)[keyof typeof IndexType];\n\nexport interface SyntropixDBIndex {\n name?: string;\n unique: boolean;\n nullsNotDistinct: boolean;\n columns: string[];\n indexType: IndexType;\n}\n","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","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 Join,\n Sort,\n SyntropixDBForeignKey,\n SyntropixDBIndex,\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');\nconst PATH_KEY = Symbol('path');\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 | null {\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 null;\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(): SyntropixDBIndex[] {\n return Reflect.getMetadata(INDEXES_KEY, this) || [];\n }\n\n protected static getPath(): string {\n return Reflect.getMetadata(PATH_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 | null {\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 const path = this.getPath();\n return await client.table.createTable({\n name: this.getTableName(),\n displayName: this.getDisplayName() || undefined,\n description: this.getDescription() || '',\n columns,\n foreignKeys,\n indexes,\n path,\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"]}
package/dist/index.d.cts CHANGED
@@ -484,15 +484,16 @@ declare class BaseModel {
484
484
  private _extra;
485
485
  constructor(data?: Record<string, any>);
486
486
  protected static getTableName(): string;
487
- protected static getDisplayName(): string;
487
+ protected static getDisplayName(): string | null;
488
488
  static getDescription(): string;
489
489
  protected static getIndexes(): SyntropixDBIndex[];
490
+ protected static getPath(): string;
490
491
  protected static getFields(): Record<string, Field>;
491
492
  protected static getPrimaryKeyName(): string;
492
493
  protected static getAssociations(): ForeignKeyField[];
493
494
  protected getFields(): Record<string, Field>;
494
495
  protected getTableName(): string;
495
- protected getDisplayName(): string;
496
+ protected getDisplayName(): string | null;
496
497
  protected getPrimaryKeyName(): string;
497
498
  protected getPrimaryKey(): Field | undefined;
498
499
  protected get client(): SyntropixClient;
package/dist/index.d.ts CHANGED
@@ -484,15 +484,16 @@ declare class BaseModel {
484
484
  private _extra;
485
485
  constructor(data?: Record<string, any>);
486
486
  protected static getTableName(): string;
487
- protected static getDisplayName(): string;
487
+ protected static getDisplayName(): string | null;
488
488
  static getDescription(): string;
489
489
  protected static getIndexes(): SyntropixDBIndex[];
490
+ protected static getPath(): string;
490
491
  protected static getFields(): Record<string, Field>;
491
492
  protected static getPrimaryKeyName(): string;
492
493
  protected static getAssociations(): ForeignKeyField[];
493
494
  protected getFields(): Record<string, Field>;
494
495
  protected getTableName(): string;
495
- protected getDisplayName(): string;
496
+ protected getDisplayName(): string | null;
496
497
  protected getPrimaryKeyName(): string;
497
498
  protected getPrimaryKey(): Field | undefined;
498
499
  protected get client(): SyntropixClient;
package/dist/index.js CHANGED
@@ -722,6 +722,7 @@ var TABLE_NAME_KEY = Symbol("tableName");
722
722
  var TABLE_DISPLAY_NAME_KEY = Symbol("displayTableName");
723
723
  var DESCRIPTION_KEY = Symbol("description");
724
724
  var INDEXES_KEY = Symbol("indexes");
725
+ var PATH_KEY = Symbol("path");
725
726
  function Column(options = {}) {
726
727
  return function(target, propertyKey) {
727
728
  const fields = Reflect.getMetadata(FIELDS_KEY, target.constructor) || {};
@@ -806,7 +807,7 @@ var BaseModel = class {
806
807
  if ("displayName" in this && typeof this.displayName === "string") {
807
808
  return this.displayName;
808
809
  }
809
- return this.name;
810
+ return null;
810
811
  }
811
812
  static getDescription() {
812
813
  const metadataDescription = Reflect.getMetadata(DESCRIPTION_KEY, this);
@@ -819,6 +820,9 @@ var BaseModel = class {
819
820
  static getIndexes() {
820
821
  return Reflect.getMetadata(INDEXES_KEY, this) || [];
821
822
  }
823
+ static getPath() {
824
+ return Reflect.getMetadata(PATH_KEY, this) || "";
825
+ }
822
826
  static getFields() {
823
827
  const fields = Reflect.getMetadata(FIELDS_KEY, this) || {};
824
828
  let hasPrimaryKey = false;
@@ -895,13 +899,15 @@ var BaseModel = class {
895
899
  onUpdate: f.onUpdate
896
900
  }));
897
901
  const indexes = this.getIndexes();
902
+ const path = this.getPath();
898
903
  return await client.table.createTable({
899
904
  name: this.getTableName(),
900
- displayName: this.getDisplayName(),
901
- description: this.getDescription() || "No description",
905
+ displayName: this.getDisplayName() || void 0,
906
+ description: this.getDescription() || "",
902
907
  columns,
903
908
  foreignKeys,
904
- indexes
909
+ indexes,
910
+ path
905
911
  });
906
912
  }
907
913
  static async dropTable(client = new SyntropixClient()) {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/types/model/access.ts","../src/types/model/db-index.ts","../src/types/model/filter.ts","../src/types/model/foreign-key.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":["AccessType","None","Read","Write","Admin","IndexType","Gin","GinTrgmOps","IvfflatL2Ops","InfflatCosineOps","InfflatIpOps","SortType","Descending","Ascending","AggregateFunction","FilterOperation","ForeignKeyAction","Cascade","Restrict","SetNull","NoAction","SetDefault","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.js","sourcesContent":["import { Filter } from './filter';\n\nexport 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\nexport interface SyntropixDBRowAccess {\n read?: Filter;\n write?: Filter;\n}\n\nexport interface SyntropixDBAccess {\n tableAccess: AccessType;\n rowAccess?: Record<string, SyntropixDBRowAccess>;\n columnAccess: Record<string, AccessType>;\n createdAt: Date;\n updatedAt: Date;\n}\n","export const IndexType = {\n Gin: 'Gin',\n GinTrgmOps: 'GinTrgmOps',\n IvfflatL2Ops: 'IvfflatL2Ops',\n InfflatCosineOps: 'InfflatCosineOps',\n InfflatIpOps: 'InfflatIpOps',\n} as const;\n\nexport type IndexType = (typeof IndexType)[keyof typeof IndexType];\n\nexport interface SyntropixDBIndex {\n name?: string;\n unique: boolean;\n nullsNotDistinct: boolean;\n columns: string[];\n indexType: IndexType;\n}\n","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","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 Join,\n Sort,\n SyntropixDBForeignKey,\n SyntropixDBIndex,\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(): SyntropixDBIndex[] {\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"]}
1
+ {"version":3,"sources":["../src/types/model/access.ts","../src/types/model/db-index.ts","../src/types/model/filter.ts","../src/types/model/foreign-key.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":["AccessType","None","Read","Write","Admin","IndexType","Gin","GinTrgmOps","IvfflatL2Ops","InfflatCosineOps","InfflatIpOps","SortType","Descending","Ascending","AggregateFunction","FilterOperation","ForeignKeyAction","Cascade","Restrict","SetNull","NoAction","SetDefault","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","PATH_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","getPath","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.js","sourcesContent":["import { Filter } from './filter';\n\nexport 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\nexport interface SyntropixDBRowAccess {\n read?: Filter;\n write?: Filter;\n}\n\nexport interface SyntropixDBAccess {\n tableAccess: AccessType;\n rowAccess?: Record<string, SyntropixDBRowAccess>;\n columnAccess: Record<string, AccessType>;\n createdAt: Date;\n updatedAt: Date;\n}\n","export const IndexType = {\n Gin: 'Gin',\n GinTrgmOps: 'GinTrgmOps',\n IvfflatL2Ops: 'IvfflatL2Ops',\n InfflatCosineOps: 'InfflatCosineOps',\n InfflatIpOps: 'InfflatIpOps',\n} as const;\n\nexport type IndexType = (typeof IndexType)[keyof typeof IndexType];\n\nexport interface SyntropixDBIndex {\n name?: string;\n unique: boolean;\n nullsNotDistinct: boolean;\n columns: string[];\n indexType: IndexType;\n}\n","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","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 Join,\n Sort,\n SyntropixDBForeignKey,\n SyntropixDBIndex,\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');\nconst PATH_KEY = Symbol('path');\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 | null {\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 null;\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(): SyntropixDBIndex[] {\n return Reflect.getMetadata(INDEXES_KEY, this) || [];\n }\n\n protected static getPath(): string {\n return Reflect.getMetadata(PATH_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 | null {\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 const path = this.getPath();\n return await client.table.createTable({\n name: this.getTableName(),\n displayName: this.getDisplayName() || undefined,\n description: this.getDescription() || '',\n columns,\n foreignKeys,\n indexes,\n path,\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"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@syntropix/database",
3
- "version": "0.2.2",
3
+ "version": "0.2.4",
4
4
  "type": "module",
5
5
  "description": "TypeScript SDK for database operations with ORM support",
6
6
  "main": "dist/index.js",