linkgress-orm 0.0.1

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.
Files changed (147) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +196 -0
  3. package/dist/database/database-client.interface.d.ts +45 -0
  4. package/dist/database/database-client.interface.d.ts.map +1 -0
  5. package/dist/database/database-client.interface.js +20 -0
  6. package/dist/database/database-client.interface.js.map +1 -0
  7. package/dist/database/index.d.ts +5 -0
  8. package/dist/database/index.d.ts.map +1 -0
  9. package/dist/database/index.js +10 -0
  10. package/dist/database/index.js.map +1 -0
  11. package/dist/database/pg-client.d.ts +30 -0
  12. package/dist/database/pg-client.d.ts.map +1 -0
  13. package/dist/database/pg-client.js +76 -0
  14. package/dist/database/pg-client.js.map +1 -0
  15. package/dist/database/postgres-client.d.ts +44 -0
  16. package/dist/database/postgres-client.d.ts.map +1 -0
  17. package/dist/database/postgres-client.js +111 -0
  18. package/dist/database/postgres-client.js.map +1 -0
  19. package/dist/database/types.d.ts +200 -0
  20. package/dist/database/types.d.ts.map +1 -0
  21. package/dist/database/types.js +8 -0
  22. package/dist/database/types.js.map +1 -0
  23. package/dist/entity/base-entity.d.ts +21 -0
  24. package/dist/entity/base-entity.d.ts.map +1 -0
  25. package/dist/entity/base-entity.js +27 -0
  26. package/dist/entity/base-entity.js.map +1 -0
  27. package/dist/entity/db-column.d.ts +61 -0
  28. package/dist/entity/db-column.d.ts.map +1 -0
  29. package/dist/entity/db-column.js +35 -0
  30. package/dist/entity/db-column.js.map +1 -0
  31. package/dist/entity/db-context.d.ts +665 -0
  32. package/dist/entity/db-context.d.ts.map +1 -0
  33. package/dist/entity/db-context.js +1463 -0
  34. package/dist/entity/db-context.js.map +1 -0
  35. package/dist/entity/entity-base.d.ts +76 -0
  36. package/dist/entity/entity-base.d.ts.map +1 -0
  37. package/dist/entity/entity-base.js +42 -0
  38. package/dist/entity/entity-base.js.map +1 -0
  39. package/dist/entity/entity-builder.d.ts +171 -0
  40. package/dist/entity/entity-builder.d.ts.map +1 -0
  41. package/dist/entity/entity-builder.js +376 -0
  42. package/dist/entity/entity-builder.js.map +1 -0
  43. package/dist/entity/model-config.d.ts +18 -0
  44. package/dist/entity/model-config.d.ts.map +1 -0
  45. package/dist/entity/model-config.js +157 -0
  46. package/dist/entity/model-config.js.map +1 -0
  47. package/dist/index.d.ts +27 -0
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.js +142 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/migration/db-schema-manager.d.ts +228 -0
  52. package/dist/migration/db-schema-manager.d.ts.map +1 -0
  53. package/dist/migration/db-schema-manager.js +1055 -0
  54. package/dist/migration/db-schema-manager.js.map +1 -0
  55. package/dist/migration/enum-migrator.d.ts +29 -0
  56. package/dist/migration/enum-migrator.d.ts.map +1 -0
  57. package/dist/migration/enum-migrator.js +137 -0
  58. package/dist/migration/enum-migrator.js.map +1 -0
  59. package/dist/query/collection-strategy.factory.d.ts +16 -0
  60. package/dist/query/collection-strategy.factory.d.ts.map +1 -0
  61. package/dist/query/collection-strategy.factory.js +37 -0
  62. package/dist/query/collection-strategy.factory.js.map +1 -0
  63. package/dist/query/collection-strategy.interface.d.ts +146 -0
  64. package/dist/query/collection-strategy.interface.d.ts.map +1 -0
  65. package/dist/query/collection-strategy.interface.js +3 -0
  66. package/dist/query/collection-strategy.interface.js.map +1 -0
  67. package/dist/query/conditions.d.ts +222 -0
  68. package/dist/query/conditions.d.ts.map +1 -0
  69. package/dist/query/conditions.js +446 -0
  70. package/dist/query/conditions.js.map +1 -0
  71. package/dist/query/cte-builder.d.ts +95 -0
  72. package/dist/query/cte-builder.d.ts.map +1 -0
  73. package/dist/query/cte-builder.js +172 -0
  74. package/dist/query/cte-builder.js.map +1 -0
  75. package/dist/query/grouped-query.d.ts +186 -0
  76. package/dist/query/grouped-query.d.ts.map +1 -0
  77. package/dist/query/grouped-query.js +588 -0
  78. package/dist/query/grouped-query.js.map +1 -0
  79. package/dist/query/join-builder.d.ts +106 -0
  80. package/dist/query/join-builder.d.ts.map +1 -0
  81. package/dist/query/join-builder.js +275 -0
  82. package/dist/query/join-builder.js.map +1 -0
  83. package/dist/query/query-builder.d.ts +543 -0
  84. package/dist/query/query-builder.d.ts.map +1 -0
  85. package/dist/query/query-builder.js +2649 -0
  86. package/dist/query/query-builder.js.map +1 -0
  87. package/dist/query/strategies/jsonb-collection-strategy.d.ts +51 -0
  88. package/dist/query/strategies/jsonb-collection-strategy.d.ts.map +1 -0
  89. package/dist/query/strategies/jsonb-collection-strategy.js +210 -0
  90. package/dist/query/strategies/jsonb-collection-strategy.js.map +1 -0
  91. package/dist/query/strategies/temptable-collection-strategy.d.ts +95 -0
  92. package/dist/query/strategies/temptable-collection-strategy.d.ts.map +1 -0
  93. package/dist/query/strategies/temptable-collection-strategy.js +456 -0
  94. package/dist/query/strategies/temptable-collection-strategy.js.map +1 -0
  95. package/dist/query/subquery.d.ts +152 -0
  96. package/dist/query/subquery.d.ts.map +1 -0
  97. package/dist/query/subquery.js +206 -0
  98. package/dist/query/subquery.js.map +1 -0
  99. package/dist/schema/column-builder.d.ts +127 -0
  100. package/dist/schema/column-builder.d.ts.map +1 -0
  101. package/dist/schema/column-builder.js +184 -0
  102. package/dist/schema/column-builder.js.map +1 -0
  103. package/dist/schema/inference.d.ts +26 -0
  104. package/dist/schema/inference.d.ts.map +1 -0
  105. package/dist/schema/inference.js +3 -0
  106. package/dist/schema/inference.js.map +1 -0
  107. package/dist/schema/navigation.d.ts +215 -0
  108. package/dist/schema/navigation.d.ts.map +1 -0
  109. package/dist/schema/navigation.js +233 -0
  110. package/dist/schema/navigation.js.map +1 -0
  111. package/dist/schema/row-type.d.ts +26 -0
  112. package/dist/schema/row-type.d.ts.map +1 -0
  113. package/dist/schema/row-type.js +3 -0
  114. package/dist/schema/row-type.js.map +1 -0
  115. package/dist/schema/sequence-builder.d.ts +87 -0
  116. package/dist/schema/sequence-builder.d.ts.map +1 -0
  117. package/dist/schema/sequence-builder.js +123 -0
  118. package/dist/schema/sequence-builder.js.map +1 -0
  119. package/dist/schema/table-builder.d.ts +122 -0
  120. package/dist/schema/table-builder.d.ts.map +1 -0
  121. package/dist/schema/table-builder.js +132 -0
  122. package/dist/schema/table-builder.js.map +1 -0
  123. package/dist/schema/typed-schema.d.ts +22 -0
  124. package/dist/schema/typed-schema.d.ts.map +1 -0
  125. package/dist/schema/typed-schema.js +28 -0
  126. package/dist/schema/typed-schema.js.map +1 -0
  127. package/dist/types/column-types.d.ts +20 -0
  128. package/dist/types/column-types.d.ts.map +1 -0
  129. package/dist/types/column-types.js +14 -0
  130. package/dist/types/column-types.js.map +1 -0
  131. package/dist/types/custom-types.d.ts +85 -0
  132. package/dist/types/custom-types.d.ts.map +1 -0
  133. package/dist/types/custom-types.js +132 -0
  134. package/dist/types/custom-types.js.map +1 -0
  135. package/dist/types/enum-builder.d.ts +31 -0
  136. package/dist/types/enum-builder.d.ts.map +1 -0
  137. package/dist/types/enum-builder.js +46 -0
  138. package/dist/types/enum-builder.js.map +1 -0
  139. package/dist/types/metadata.d.ts +67 -0
  140. package/dist/types/metadata.d.ts.map +1 -0
  141. package/dist/types/metadata.js +57 -0
  142. package/dist/types/metadata.js.map +1 -0
  143. package/dist/types/type-mapper.d.ts +49 -0
  144. package/dist/types/type-mapper.d.ts.map +1 -0
  145. package/dist/types/type-mapper.js +49 -0
  146. package/dist/types/type-mapper.js.map +1 -0
  147. package/package.json +77 -0
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SequenceBuilder = exports.DbSequence = void 0;
4
+ exports.sequence = sequence;
5
+ /**
6
+ * Sequence instance for interacting with PostgreSQL sequences
7
+ */
8
+ class DbSequence {
9
+ constructor(client, config) {
10
+ this.client = client;
11
+ this.config = config;
12
+ this.qualifiedName = config.schema
13
+ ? `"${config.schema}"."${config.name}"`
14
+ : `"${config.name}"`;
15
+ }
16
+ /**
17
+ * Get the next value from the sequence
18
+ */
19
+ async nextValue() {
20
+ const result = await this.client.query(`SELECT nextval($1::regclass) as value`, [this.qualifiedName]);
21
+ return Number(result.rows[0].value);
22
+ }
23
+ /**
24
+ * Get the current value of the sequence (without incrementing)
25
+ */
26
+ async currentValue() {
27
+ const result = await this.client.query(`SELECT currval($1::regclass) as value`, [this.qualifiedName]);
28
+ return Number(result.rows[0].value);
29
+ }
30
+ /**
31
+ * Set the sequence to a specific value
32
+ */
33
+ async resync(value) {
34
+ await this.client.query(`SELECT setval($1::regclass, $2, true)`, [this.qualifiedName, value]);
35
+ }
36
+ /**
37
+ * Get the sequence configuration
38
+ */
39
+ getConfig() {
40
+ return { ...this.config };
41
+ }
42
+ /**
43
+ * Get the qualified sequence name (with schema if applicable)
44
+ */
45
+ getQualifiedName() {
46
+ return this.qualifiedName;
47
+ }
48
+ }
49
+ exports.DbSequence = DbSequence;
50
+ /**
51
+ * Builder for creating sequence configurations
52
+ */
53
+ class SequenceBuilder {
54
+ constructor(name) {
55
+ this.config = {
56
+ name,
57
+ incrementBy: 1,
58
+ };
59
+ }
60
+ /**
61
+ * Set the schema for this sequence
62
+ */
63
+ inSchema(schema) {
64
+ this.config.schema = schema;
65
+ return this;
66
+ }
67
+ /**
68
+ * Set the starting value
69
+ */
70
+ startWith(value) {
71
+ this.config.startWith = value;
72
+ return this;
73
+ }
74
+ /**
75
+ * Set the increment value
76
+ */
77
+ incrementBy(value) {
78
+ this.config.incrementBy = value;
79
+ return this;
80
+ }
81
+ /**
82
+ * Set minimum value
83
+ */
84
+ minValue(value) {
85
+ this.config.minValue = value;
86
+ return this;
87
+ }
88
+ /**
89
+ * Set maximum value
90
+ */
91
+ maxValue(value) {
92
+ this.config.maxValue = value;
93
+ return this;
94
+ }
95
+ /**
96
+ * Set cache size
97
+ */
98
+ cache(value) {
99
+ this.config.cache = value;
100
+ return this;
101
+ }
102
+ /**
103
+ * Enable cycling (restart when reaching max/min value)
104
+ */
105
+ cycle() {
106
+ this.config.cycle = true;
107
+ return this;
108
+ }
109
+ /**
110
+ * Build the sequence configuration
111
+ */
112
+ build() {
113
+ return { ...this.config };
114
+ }
115
+ }
116
+ exports.SequenceBuilder = SequenceBuilder;
117
+ /**
118
+ * Helper function to create a sequence builder
119
+ */
120
+ function sequence(name) {
121
+ return new SequenceBuilder(name);
122
+ }
123
+ //# sourceMappingURL=sequence-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sequence-builder.js","sourceRoot":"","sources":["../../src/schema/sequence-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,122 @@
1
+ import { ColumnBuilder } from './column-builder';
2
+ import { DbCollection, DbReference, DbNavigationCollection, DbNavigation } from './navigation';
3
+ /**
4
+ * Relation types
5
+ */
6
+ export type RelationType = 'one' | 'many';
7
+ /**
8
+ * Relation configuration
9
+ */
10
+ export interface RelationConfig {
11
+ type: RelationType;
12
+ targetTable: string;
13
+ targetTableBuilder?: TableBuilder<any>;
14
+ foreignKey?: string;
15
+ foreignKeys?: string[];
16
+ matches?: string[];
17
+ references?: string;
18
+ isMandatory?: boolean;
19
+ }
20
+ /**
21
+ * Index definition
22
+ */
23
+ export interface IndexDefinition {
24
+ name: string;
25
+ columns: string[];
26
+ }
27
+ /**
28
+ * Foreign key action type
29
+ */
30
+ export type ForeignKeyAction = 'cascade' | 'restrict' | 'no action' | 'set null' | 'set default';
31
+ /**
32
+ * Foreign key constraint definition
33
+ */
34
+ export interface ForeignKeyConstraint {
35
+ name: string;
36
+ columns: string[];
37
+ referencedTable: string;
38
+ referencedColumns: string[];
39
+ onDelete?: ForeignKeyAction;
40
+ onUpdate?: ForeignKeyAction;
41
+ }
42
+ /**
43
+ * Table schema definition
44
+ */
45
+ export interface TableSchema<TColumns extends Record<string, ColumnBuilder> = any> {
46
+ name: string;
47
+ schema?: string;
48
+ columns: TColumns;
49
+ relations: Record<string, RelationConfig>;
50
+ indexes: IndexDefinition[];
51
+ foreignKeys: ForeignKeyConstraint[];
52
+ }
53
+ /**
54
+ * Extract TypeScript type from column builders
55
+ */
56
+ export type InferColumnType<T> = T extends ColumnBuilder<infer U> ? U : never;
57
+ /**
58
+ * Infer table row type from schema
59
+ */
60
+ export type InferTableType<T extends TableSchema> = {
61
+ [K in keyof T['columns']]: InferColumnType<T['columns'][K]>;
62
+ };
63
+ /**
64
+ * Schema definition can include both columns and navigation properties
65
+ */
66
+ export type SchemaDefinition = Record<string, ColumnBuilder | DbCollection<any> | DbReference<any> | DbNavigationCollection<any> | DbNavigation<any>>;
67
+ /**
68
+ * Extract only column builders from schema definition
69
+ */
70
+ export type ExtractColumns<T extends SchemaDefinition> = {
71
+ [K in keyof T as T[K] extends ColumnBuilder ? K : never]: T[K];
72
+ };
73
+ /**
74
+ * Extract only navigation properties from schema definition
75
+ */
76
+ export type ExtractNavigations<T extends SchemaDefinition> = {
77
+ [K in keyof T as T[K] extends DbCollection<any> | DbReference<any> | DbNavigationCollection<any> | DbNavigation<any> ? K : never]: T[K];
78
+ };
79
+ /**
80
+ * Table builder - fluent API for defining tables with columns and navigation properties
81
+ */
82
+ export declare class TableBuilder<TSchema extends SchemaDefinition = any> {
83
+ private tableName;
84
+ private schemaName?;
85
+ private schemaDef;
86
+ private columnDefs;
87
+ private relationDefs;
88
+ private indexDefs;
89
+ private foreignKeyDefs;
90
+ constructor(name: string, schema: TSchema, indexes?: IndexDefinition[], foreignKeys?: ForeignKeyConstraint[], schemaName?: string);
91
+ /**
92
+ * Build the final table schema
93
+ */
94
+ build(): TableSchema<any>;
95
+ /**
96
+ * Get table name
97
+ */
98
+ getName(): string;
99
+ /**
100
+ * Get columns
101
+ */
102
+ getColumns(): Record<string, ColumnBuilder>;
103
+ /**
104
+ * Get relations
105
+ */
106
+ getRelations(): Record<string, RelationConfig>;
107
+ /**
108
+ * Get full schema definition (columns + navigations)
109
+ */
110
+ getSchema(): TSchema;
111
+ /**
112
+ * Get a typed field reference for a column (for use in navigation definitions)
113
+ * @example table.field('id') returns FieldRef<'id', number>
114
+ */
115
+ field<K extends keyof ExtractColumns<TSchema>>(columnName: K): any;
116
+ }
117
+ /**
118
+ * Table factory function
119
+ * Supports both columns and navigation properties
120
+ */
121
+ export declare function table<TSchema extends SchemaDefinition>(name: string, schema: TSchema): TableBuilder<TSchema>;
122
+ //# sourceMappingURL=table-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-builder.d.ts","sourceRoot":"","sources":["../../src/schema/table-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TableBuilder = void 0;
4
+ exports.table = table;
5
+ const column_builder_1 = require("./column-builder");
6
+ const navigation_1 = require("./navigation");
7
+ /**
8
+ * Table builder - fluent API for defining tables with columns and navigation properties
9
+ */
10
+ class TableBuilder {
11
+ constructor(name, schema, indexes, foreignKeys, schemaName) {
12
+ this.columnDefs = {};
13
+ this.relationDefs = {};
14
+ this.indexDefs = [];
15
+ this.foreignKeyDefs = [];
16
+ this.tableName = name;
17
+ this.schemaName = schemaName;
18
+ this.schemaDef = schema;
19
+ this.indexDefs = indexes || [];
20
+ this.foreignKeyDefs = foreignKeys || [];
21
+ // Separate columns from navigation properties
22
+ for (const [key, value] of Object.entries(schema)) {
23
+ if ((0, navigation_1.isNavigationProperty)(value)) {
24
+ // Navigation property
25
+ if ((0, navigation_1.isNavigationCollection)(value)) {
26
+ // New navigation collection API
27
+ this.relationDefs[key] = {
28
+ type: 'many',
29
+ targetTable: value.targetTable,
30
+ targetTableBuilder: value.targetTableBuilder,
31
+ foreignKeys: value.foreignKeyColumns,
32
+ matches: value.matchColumns,
33
+ isMandatory: value.isMandatory,
34
+ };
35
+ }
36
+ else if ((0, navigation_1.isNavigation)(value)) {
37
+ // New single navigation API
38
+ this.relationDefs[key] = {
39
+ type: 'one',
40
+ targetTable: value.getTargetTable(),
41
+ targetTableBuilder: value.targetTableBuilder,
42
+ foreignKeys: value.getForeignKeyColumns(),
43
+ matches: value.getMatchColumns(),
44
+ isMandatory: value.getIsMandatory(),
45
+ };
46
+ }
47
+ else if (value instanceof navigation_1.DbCollection) {
48
+ // Old collection API (backward compatibility)
49
+ this.relationDefs[key] = {
50
+ type: 'many',
51
+ targetTable: value.targetTable,
52
+ foreignKey: value.foreignKey,
53
+ };
54
+ }
55
+ else if (value instanceof navigation_1.DbReference) {
56
+ // Old reference API (backward compatibility)
57
+ this.relationDefs[key] = {
58
+ type: 'one',
59
+ targetTable: value.targetTable,
60
+ foreignKey: value.foreignKey,
61
+ references: value.references,
62
+ };
63
+ }
64
+ }
65
+ else {
66
+ // Regular column
67
+ this.columnDefs[key] = value;
68
+ }
69
+ }
70
+ }
71
+ /**
72
+ * Build the final table schema
73
+ */
74
+ build() {
75
+ return {
76
+ name: this.tableName,
77
+ schema: this.schemaName,
78
+ columns: this.columnDefs,
79
+ relations: this.relationDefs,
80
+ indexes: this.indexDefs,
81
+ foreignKeys: this.foreignKeyDefs,
82
+ };
83
+ }
84
+ /**
85
+ * Get table name
86
+ */
87
+ getName() {
88
+ return this.tableName;
89
+ }
90
+ /**
91
+ * Get columns
92
+ */
93
+ getColumns() {
94
+ return this.columnDefs;
95
+ }
96
+ /**
97
+ * Get relations
98
+ */
99
+ getRelations() {
100
+ return this.relationDefs;
101
+ }
102
+ /**
103
+ * Get full schema definition (columns + navigations)
104
+ */
105
+ getSchema() {
106
+ return this.schemaDef;
107
+ }
108
+ /**
109
+ * Get a typed field reference for a column (for use in navigation definitions)
110
+ * @example table.field('id') returns FieldRef<'id', number>
111
+ */
112
+ field(columnName) {
113
+ const column = this.schemaDef[columnName];
114
+ if (column instanceof column_builder_1.ColumnBuilder || column.build) {
115
+ const dbColumnName = column.build().name;
116
+ return {
117
+ __fieldName: columnName,
118
+ __dbColumnName: dbColumnName,
119
+ };
120
+ }
121
+ throw new Error(`Column ${String(columnName)} not found`);
122
+ }
123
+ }
124
+ exports.TableBuilder = TableBuilder;
125
+ /**
126
+ * Table factory function
127
+ * Supports both columns and navigation properties
128
+ */
129
+ function table(name, schema) {
130
+ return new TableBuilder(name, schema);
131
+ }
132
+ //# sourceMappingURL=table-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-builder.js","sourceRoot":"","sources":["../../src/schema/table-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { InferTableType, TableSchema } from './table-builder';
2
+ import { CollectionQueryBuilder } from '../query/query-builder';
3
+ /**
4
+ * Create a typed row proxy for queries
5
+ * This allows strong typing without 'as any'
6
+ */
7
+ export type TypedRow<T extends TableSchema> = {
8
+ [K in keyof T['columns']]: K;
9
+ } & {
10
+ [K in keyof T['relations']]: T['relations'][K]['type'] extends 'many' ? CollectionQueryBuilder<any> : any;
11
+ };
12
+ /**
13
+ * Helper to create typed row accessor
14
+ */
15
+ export declare function createTypedRow<T extends TableSchema>(schema: T): TypedRow<T>;
16
+ /**
17
+ * Infer the full type including columns and relations
18
+ */
19
+ export type InferSchemaType<T extends TableSchema> = InferTableType<T> & {
20
+ [K in keyof T['relations']]: T['relations'][K]['type'] extends 'many' ? CollectionQueryBuilder<any> : any;
21
+ };
22
+ //# sourceMappingURL=typed-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typed-schema.d.ts","sourceRoot":"","sources":["../../src/schema/typed-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,cAAc,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAEhE;;;GAGG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,SAAS,WAAW,IAAI;KAC3C,CAAC,IAAI,MAAM,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC;CAC7B,GAAG;KACD,CAAC,IAAI,MAAM,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,MAAM,GACjE,sBAAsB,CAAC,GAAG,CAAC,GAC3B,GAAG;CACR,CAAC;AAEF;;GAEG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,WAAW,EAAE,MAAM,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CA4B5E;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,WAAW,IAAI,cAAc,CAAC,CAAC,CAAC,GAAG;KACtE,CAAC,IAAI,MAAM,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,MAAM,GACjE,sBAAsB,CAAC,GAAG,CAAC,GAC3B,GAAG;CACR,CAAC"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createTypedRow = createTypedRow;
4
+ const query_builder_1 = require("../query/query-builder");
5
+ /**
6
+ * Helper to create typed row accessor
7
+ */
8
+ function createTypedRow(schema) {
9
+ const row = {};
10
+ // Add column accessors
11
+ for (const colName of Object.keys(schema.columns)) {
12
+ Object.defineProperty(row, colName, {
13
+ get: () => colName,
14
+ enumerable: true,
15
+ });
16
+ }
17
+ // Add relation accessors
18
+ for (const [relName, relConfig] of Object.entries(schema.relations)) {
19
+ if (relConfig.type === 'many') {
20
+ Object.defineProperty(row, relName, {
21
+ get: () => new query_builder_1.CollectionQueryBuilder(relName, relConfig.targetTable, relConfig.foreignKey, schema.name),
22
+ enumerable: true,
23
+ });
24
+ }
25
+ }
26
+ return row;
27
+ }
28
+ //# sourceMappingURL=typed-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typed-schema.js","sourceRoot":"","sources":["../../src/schema/typed-schema.ts"],"names":[],"mappings":";;AAkBA,wCA4BC;AA7CD,0DAAgE;AAchE;;GAEG;AACH,SAAgB,cAAc,CAAwB,MAAS;IAC7D,MAAM,GAAG,GAAQ,EAAE,CAAC;IAEpB,uBAAuB;IACvB,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QAClD,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE;YAClC,GAAG,EAAE,GAAG,EAAE,CAAC,OAAO;YAClB,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;IACL,CAAC;IAED,yBAAyB;IACzB,KAAK,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;QACpE,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC9B,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE;gBAClC,GAAG,EAAE,GAAG,EAAE,CACR,IAAI,sCAAsB,CACxB,OAAO,EACP,SAAS,CAAC,WAAW,EACrB,SAAS,CAAC,UAAW,EACrB,MAAM,CAAC,IAAI,CACZ;gBACH,UAAU,EAAE,IAAI;aACjB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,GAAkB,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * PostgreSQL column types supported by the ORM
3
+ */
4
+ export type ColumnType = 'smallint' | 'integer' | 'bigint' | 'decimal' | 'numeric' | 'real' | 'double precision' | 'smallserial' | 'serial' | 'bigserial' | 'money' | 'varchar' | 'char' | 'text' | 'bytea' | 'timestamp' | 'timestamptz' | 'date' | 'time' | 'timetz' | 'interval' | 'boolean' | 'uuid' | 'json' | 'jsonb' | 'inet' | 'cidr' | 'macaddr' | 'macaddr8' | 'point' | 'line' | 'lseg' | 'box' | 'path' | 'polygon' | 'circle' | 'array' | string;
5
+ /**
6
+ * TypeScript type mapping for PostgreSQL types
7
+ */
8
+ export type TypeScriptType<T extends ColumnType> = T extends 'smallint' | 'integer' | 'bigint' | 'serial' | 'smallserial' | 'bigserial' ? number : T extends 'decimal' | 'numeric' | 'real' | 'double precision' | 'money' ? number : T extends 'varchar' | 'char' | 'text' ? string : T extends 'bytea' ? Buffer : T extends 'timestamp' | 'timestamptz' | 'date' | 'time' | 'timetz' ? Date : T extends 'interval' ? string : T extends 'boolean' ? boolean : T extends 'uuid' ? string : T extends 'json' | 'jsonb' ? any : T extends 'inet' | 'cidr' | 'macaddr' | 'macaddr8' ? string : T extends 'point' | 'line' | 'lseg' | 'box' | 'path' | 'polygon' | 'circle' ? any : T extends 'array' ? any[] : any;
9
+ /**
10
+ * Simplified type names for common PostgreSQL types
11
+ */
12
+ export declare const TypeAliases: {
13
+ int: "integer";
14
+ float: "double precision";
15
+ datetime: "timestamp";
16
+ string: "text";
17
+ bool: "boolean";
18
+ };
19
+ export type TypeAlias = keyof typeof TypeAliases;
20
+ //# sourceMappingURL=column-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"column-types.d.ts","sourceRoot":"","sources":["../../src/types/column-types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,UAAU,GAElB,UAAU,GAAG,SAAS,GAAG,QAAQ,GACjC,SAAS,GAAG,SAAS,GACrB,MAAM,GAAG,kBAAkB,GAC3B,aAAa,GAAG,QAAQ,GAAG,WAAW,GAEtC,OAAO,GAEP,SAAS,GAAG,MAAM,GAAG,MAAM,GAE3B,OAAO,GAEP,WAAW,GAAG,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,GAErE,SAAS,GAET,MAAM,GAEN,MAAM,GAAG,OAAO,GAEhB,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,GAExC,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAEjE,OAAO,GAEP,MAAM,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,UAAU,IAC7C,CAAC,SAAS,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,aAAa,GAAG,WAAW,GAAG,MAAM,GAC7F,CAAC,SAAS,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,kBAAkB,GAAG,OAAO,GAAG,MAAM,GAChF,CAAC,SAAS,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAC9C,CAAC,SAAS,OAAO,GAAG,MAAM,GAC1B,CAAC,SAAS,WAAW,GAAG,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,IAAI,GACzE,CAAC,SAAS,UAAU,GAAG,MAAM,GAC7B,CAAC,SAAS,SAAS,GAAG,OAAO,GAC7B,CAAC,SAAS,MAAM,GAAG,MAAM,GACzB,CAAC,SAAS,MAAM,GAAG,OAAO,GAAG,GAAG,GAChC,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,GAC3D,CAAC,SAAS,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,GAAG,GACjF,CAAC,SAAS,OAAO,GAAG,GAAG,EAAE,GACzB,GAAG,CAAC;AAEN;;GAEG;AACH,eAAO,MAAM,WAAW;;;;;;CAMvB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,WAAW,CAAC"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TypeAliases = void 0;
4
+ /**
5
+ * Simplified type names for common PostgreSQL types
6
+ */
7
+ exports.TypeAliases = {
8
+ int: 'integer',
9
+ float: 'double precision',
10
+ datetime: 'timestamp',
11
+ string: 'text',
12
+ bool: 'boolean',
13
+ };
14
+ //# sourceMappingURL=column-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"column-types.js","sourceRoot":"","sources":["../../src/types/column-types.ts"],"names":[],"mappings":";;;AAkDA;;GAEG;AACU,QAAA,WAAW,GAAG;IACzB,GAAG,EAAE,SAAkB;IACvB,KAAK,EAAE,kBAA2B;IAClC,QAAQ,EAAE,WAAoB;IAC9B,MAAM,EAAE,MAAe;IACvB,IAAI,EAAE,SAAkB;CACzB,CAAC"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Custom type definition
3
+ * Allows defining custom PostgreSQL types with TypeScript mapping
4
+ */
5
+ export interface CustomType<TData = any, TDriver = any> {
6
+ /**
7
+ * PostgreSQL type name
8
+ */
9
+ dataType: string;
10
+ /**
11
+ * Convert TypeScript value to database value
12
+ */
13
+ toDriver(value: TData): TDriver;
14
+ /**
15
+ * Convert database value to TypeScript value
16
+ */
17
+ fromDriver(value: TDriver): TData;
18
+ }
19
+ /**
20
+ * Custom type builder
21
+ */
22
+ export declare class CustomTypeBuilder<TData = any, TDriver = any> {
23
+ private config;
24
+ constructor(config: {
25
+ dataType: string;
26
+ toDriver: (value: TData) => TDriver;
27
+ fromDriver: (value: TDriver) => TData;
28
+ });
29
+ /**
30
+ * Gets the custom type definition
31
+ */
32
+ getType(): CustomType<TData, TDriver>;
33
+ /**
34
+ * Gets the PostgreSQL type name
35
+ */
36
+ get dataType(): string;
37
+ }
38
+ /**
39
+ * Creates a custom type
40
+ */
41
+ export declare function customType<TData = any, TDriver = any>(config: {
42
+ dataType: string;
43
+ toDriver: (value: TData) => TDriver;
44
+ fromDriver: (value: TDriver) => TData;
45
+ }): CustomTypeBuilder<TData, TDriver>;
46
+ /**
47
+ * Common custom types
48
+ */
49
+ /**
50
+ * JSON type with automatic serialization
51
+ */
52
+ export declare const json: <T = any>() => CustomTypeBuilder<T, string>;
53
+ /**
54
+ * Array type
55
+ */
56
+ export declare const array: <T = any>(itemType: string) => CustomTypeBuilder<T[], string>;
57
+ /**
58
+ * Enum type
59
+ */
60
+ export declare const enumType: <T extends string>(enumName: string, values: readonly T[]) => CustomTypeBuilder<T, string>;
61
+ /**
62
+ * Point type (geometric)
63
+ */
64
+ export interface Point {
65
+ x: number;
66
+ y: number;
67
+ }
68
+ export declare const point: () => CustomTypeBuilder<Point, string>;
69
+ /**
70
+ * Vector type (for pgvector extension)
71
+ */
72
+ export declare const vector: (dimensions: number) => CustomTypeBuilder<number[], string>;
73
+ /**
74
+ * Interval type
75
+ */
76
+ export interface Interval {
77
+ years?: number;
78
+ months?: number;
79
+ days?: number;
80
+ hours?: number;
81
+ minutes?: number;
82
+ seconds?: number;
83
+ }
84
+ export declare const interval: () => CustomTypeBuilder<Interval, string>;
85
+ //# sourceMappingURL=custom-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-types.d.ts","sourceRoot":"","sources":["../../src/types/custom-types.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,WAAW,UAAU,CAAC,KAAK,GAAG,GAAG,EAAE,OAAO,GAAG,GAAG;IACpD;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC;IAEhC;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,CAAC;CACnC;AAED;;GAEG;AACH,qBAAa,iBAAiB,CAAC,KAAK,GAAG,GAAG,EAAE,OAAO,GAAG,GAAG;IAErD,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC;QACpC,UAAU,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,CAAC;KACvC;IAGH;;OAEG;IACH,OAAO,IAAI,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC;IAQrC;;OAEG;IACH,IAAI,QAAQ,IAAI,MAAM,CAErB;CACF;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,GAAG,GAAG,EAAE,OAAO,GAAG,GAAG,EAAE,MAAM,EAAE;IAC7D,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC;IACpC,UAAU,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,CAAC;CACvC,GAAG,iBAAiB,CAAC,KAAK,EAAE,OAAO,CAAC,CAEpC;AAED;;GAEG;AAEH;;GAEG;AACH,eAAO,MAAM,IAAI,GAAI,CAAC,GAAG,GAAG,mCAKxB,CAAC;AAEL;;GAEG;AACH,eAAO,MAAM,KAAK,GAAI,CAAC,GAAG,GAAG,EAAE,UAAU,MAAM,mCAK3C,CAAC;AAEL;;GAEG;AACH,eAAO,MAAM,QAAQ,GAAI,CAAC,SAAS,MAAM,EACvC,UAAU,MAAM,EAChB,QAAQ,SAAS,CAAC,EAAE,iCAMlB,CAAC;AAEL;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,eAAO,MAAM,KAAK,wCASd,CAAC;AAEL;;GAEG;AACH,eAAO,MAAM,MAAM,GAAI,YAAY,MAAM,wCASrC,CAAC;AAEL;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,QAAQ,2CA4BjB,CAAC"}