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,206 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ScalarSubqueryComparison = exports.NotInSubqueryCondition = exports.InSubqueryCondition = exports.NotExistsCondition = exports.ExistsCondition = exports.Subquery = void 0;
4
+ exports.isSubquery = isSubquery;
5
+ exports.exists = exists;
6
+ exports.notExists = notExists;
7
+ exports.inSubquery = inSubquery;
8
+ exports.notInSubquery = notInSubquery;
9
+ exports.eqSubquery = eqSubquery;
10
+ exports.neSubquery = neSubquery;
11
+ exports.gtSubquery = gtSubquery;
12
+ exports.gteSubquery = gteSubquery;
13
+ exports.ltSubquery = ltSubquery;
14
+ exports.lteSubquery = lteSubquery;
15
+ const conditions_1 = require("./conditions");
16
+ /**
17
+ * Represents a subquery that can be used in various contexts
18
+ * TResult: The type of data the subquery returns
19
+ * TMode: 'scalar' | 'array' | 'table' - determines how the subquery can be used
20
+ */
21
+ class Subquery {
22
+ constructor(sqlBuilder, mode = 'table', selectionMetadata) {
23
+ this.sqlBuilder = sqlBuilder;
24
+ this.__mode = mode;
25
+ this.selectionMetadata = selectionMetadata;
26
+ }
27
+ /**
28
+ * Set an alias for this subquery (used when subquery is a table source)
29
+ */
30
+ as(alias) {
31
+ const clone = new Subquery(this.sqlBuilder, this.__mode, this.selectionMetadata);
32
+ clone.alias = alias;
33
+ return clone;
34
+ }
35
+ /**
36
+ * Build the SQL for this subquery
37
+ */
38
+ buildSql(context) {
39
+ return this.sqlBuilder(context);
40
+ }
41
+ /**
42
+ * Get the alias for this subquery
43
+ */
44
+ getAlias() {
45
+ return this.alias;
46
+ }
47
+ /**
48
+ * Get the selection metadata (preserves SqlFragments with mappers)
49
+ */
50
+ getSelectionMetadata() {
51
+ return this.selectionMetadata;
52
+ }
53
+ /**
54
+ * Check if this is a scalar subquery
55
+ */
56
+ isScalar() {
57
+ return this.__mode === 'scalar';
58
+ }
59
+ /**
60
+ * Check if this is an array subquery
61
+ */
62
+ isArray() {
63
+ return this.__mode === 'array';
64
+ }
65
+ /**
66
+ * Check if this is a table subquery
67
+ */
68
+ isTable() {
69
+ return this.__mode === 'table';
70
+ }
71
+ }
72
+ exports.Subquery = Subquery;
73
+ /**
74
+ * Helper to check if something is a Subquery
75
+ */
76
+ function isSubquery(value) {
77
+ return value instanceof Subquery;
78
+ }
79
+ /**
80
+ * Condition: EXISTS (subquery)
81
+ */
82
+ class ExistsCondition extends conditions_1.WhereConditionBase {
83
+ constructor(subquery) {
84
+ super();
85
+ this.subquery = subquery;
86
+ }
87
+ buildSql(context) {
88
+ const subquerySql = this.subquery.buildSql(context);
89
+ return `EXISTS (${subquerySql})`;
90
+ }
91
+ }
92
+ exports.ExistsCondition = ExistsCondition;
93
+ /**
94
+ * Condition: NOT EXISTS (subquery)
95
+ */
96
+ class NotExistsCondition extends conditions_1.WhereConditionBase {
97
+ constructor(subquery) {
98
+ super();
99
+ this.subquery = subquery;
100
+ }
101
+ buildSql(context) {
102
+ const subquerySql = this.subquery.buildSql(context);
103
+ return `NOT EXISTS (${subquerySql})`;
104
+ }
105
+ }
106
+ exports.NotExistsCondition = NotExistsCondition;
107
+ /**
108
+ * Condition: field IN (subquery)
109
+ * The subquery must return a single column
110
+ */
111
+ class InSubqueryCondition extends conditions_1.WhereConditionBase {
112
+ constructor(field, subquery) {
113
+ super();
114
+ this.field = field;
115
+ this.subquery = subquery;
116
+ }
117
+ buildSql(context) {
118
+ const fieldName = this.getDbColumnName(this.field);
119
+ const subquerySql = this.subquery.buildSql(context);
120
+ return `${fieldName} IN (${subquerySql})`;
121
+ }
122
+ }
123
+ exports.InSubqueryCondition = InSubqueryCondition;
124
+ /**
125
+ * Condition: field NOT IN (subquery)
126
+ */
127
+ class NotInSubqueryCondition extends conditions_1.WhereConditionBase {
128
+ constructor(field, subquery) {
129
+ super();
130
+ this.field = field;
131
+ this.subquery = subquery;
132
+ }
133
+ buildSql(context) {
134
+ const fieldName = this.getDbColumnName(this.field);
135
+ const subquerySql = this.subquery.buildSql(context);
136
+ return `${fieldName} NOT IN (${subquerySql})`;
137
+ }
138
+ }
139
+ exports.NotInSubqueryCondition = NotInSubqueryCondition;
140
+ /**
141
+ * Comparison with scalar subquery
142
+ * Example: field = (SELECT ...)
143
+ */
144
+ class ScalarSubqueryComparison extends conditions_1.WhereConditionBase {
145
+ constructor(field, operator, subquery) {
146
+ super();
147
+ this.field = field;
148
+ this.operator = operator;
149
+ this.subquery = subquery;
150
+ }
151
+ buildSql(context) {
152
+ const fieldName = this.getDbColumnName(this.field);
153
+ const subquerySql = this.subquery.buildSql(context);
154
+ return `${fieldName} ${this.operator} (${subquerySql})`;
155
+ }
156
+ }
157
+ exports.ScalarSubqueryComparison = ScalarSubqueryComparison;
158
+ /**
159
+ * Helper functions to create subquery conditions
160
+ */
161
+ /**
162
+ * EXISTS condition
163
+ */
164
+ function exists(subquery) {
165
+ return new ExistsCondition(subquery);
166
+ }
167
+ /**
168
+ * NOT EXISTS condition
169
+ */
170
+ function notExists(subquery) {
171
+ return new NotExistsCondition(subquery);
172
+ }
173
+ /**
174
+ * IN subquery condition
175
+ */
176
+ function inSubquery(field, subquery) {
177
+ return new InSubqueryCondition(field, subquery);
178
+ }
179
+ /**
180
+ * NOT IN subquery condition
181
+ */
182
+ function notInSubquery(field, subquery) {
183
+ return new NotInSubqueryCondition(field, subquery);
184
+ }
185
+ /**
186
+ * Scalar subquery comparison helpers
187
+ */
188
+ function eqSubquery(field, subquery) {
189
+ return new ScalarSubqueryComparison(field, '=', subquery);
190
+ }
191
+ function neSubquery(field, subquery) {
192
+ return new ScalarSubqueryComparison(field, '!=', subquery);
193
+ }
194
+ function gtSubquery(field, subquery) {
195
+ return new ScalarSubqueryComparison(field, '>', subquery);
196
+ }
197
+ function gteSubquery(field, subquery) {
198
+ return new ScalarSubqueryComparison(field, '>=', subquery);
199
+ }
200
+ function ltSubquery(field, subquery) {
201
+ return new ScalarSubqueryComparison(field, '<', subquery);
202
+ }
203
+ function lteSubquery(field, subquery) {
204
+ return new ScalarSubqueryComparison(field, '<=', subquery);
205
+ }
206
+ //# sourceMappingURL=subquery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subquery.js","sourceRoot":"","sources":["../../src/query/subquery.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,127 @@
1
+ import { ColumnType } from '../types/column-types';
2
+ import { TypeMapper } from '../types/type-mapper';
3
+ /**
4
+ * Identity column options
5
+ */
6
+ export interface IdentityOptions {
7
+ /** Sequence name (defaults to {table}_{column}_seq) */
8
+ name?: string;
9
+ /** Start value for the sequence */
10
+ startWith?: number;
11
+ /** Increment value */
12
+ incrementBy?: number;
13
+ }
14
+ /**
15
+ * Column configuration
16
+ */
17
+ export interface ColumnConfig {
18
+ name: string;
19
+ type: ColumnType;
20
+ nullable: boolean;
21
+ primaryKey: boolean;
22
+ autoIncrement: boolean;
23
+ unique: boolean;
24
+ default?: any;
25
+ length?: number;
26
+ precision?: number;
27
+ scale?: number;
28
+ references?: {
29
+ table: string;
30
+ column: string;
31
+ };
32
+ mapper?: TypeMapper<any, any>;
33
+ /** GENERATED ALWAYS AS IDENTITY configuration */
34
+ identity?: IdentityOptions;
35
+ /** PostgreSQL ENUM type name */
36
+ enumTypeName?: string;
37
+ }
38
+ /**
39
+ * Column builder - fluent API for defining columns
40
+ */
41
+ export declare class ColumnBuilder<TType = any> {
42
+ protected config: Partial<ColumnConfig>;
43
+ constructor(name: string, type: ColumnType);
44
+ /**
45
+ * Mark column as NOT NULL
46
+ */
47
+ notNull(): this;
48
+ /**
49
+ * Mark column as PRIMARY KEY
50
+ */
51
+ primaryKey(): this;
52
+ /**
53
+ * Mark column as AUTO INCREMENT
54
+ */
55
+ autoIncrement(): this;
56
+ /**
57
+ * Mark column as GENERATED ALWAYS AS IDENTITY (modern PostgreSQL identity columns)
58
+ * This is the preferred way over serial/bigserial for auto-incrementing primary keys
59
+ */
60
+ generatedAlwaysAsIdentity(options?: IdentityOptions): this;
61
+ /**
62
+ * Mark column as UNIQUE
63
+ */
64
+ unique(): this;
65
+ /**
66
+ * Set default value
67
+ */
68
+ default(value: any): this;
69
+ /**
70
+ * Set column length (for varchar, char)
71
+ */
72
+ length(value: number): this;
73
+ /**
74
+ * Set precision and scale (for decimal, numeric)
75
+ */
76
+ precision(precision: number, scale?: number): this;
77
+ /**
78
+ * Define foreign key reference
79
+ */
80
+ references(table: string, column?: string): this;
81
+ /**
82
+ * Set custom type mapper for bidirectional transformation
83
+ */
84
+ mapWith<TData = TType, TDriver = any>(mapper: TypeMapper<TData, TDriver>): ColumnBuilder<TData>;
85
+ /**
86
+ * Get the final column configuration
87
+ */
88
+ build(): ColumnConfig;
89
+ }
90
+ /**
91
+ * Column factory functions
92
+ */
93
+ export declare const integer: (name: string) => ColumnBuilder<number>;
94
+ export declare const serial: (name: string) => ColumnBuilder<number>;
95
+ export declare const bigint: (name: string) => ColumnBuilder<bigint>;
96
+ export declare const bigserial: (name: string) => ColumnBuilder<bigint>;
97
+ export declare const smallint: (name: string) => ColumnBuilder<number>;
98
+ export declare const decimal: (name: string, precision?: number, scale?: number) => ColumnBuilder<number>;
99
+ export declare const numeric: (name: string, precision?: number, scale?: number) => ColumnBuilder<number>;
100
+ export declare const real: (name: string) => ColumnBuilder<number>;
101
+ export declare const doublePrecision: (name: string) => ColumnBuilder<number>;
102
+ export declare const varchar: (name: string, length?: number) => ColumnBuilder<string>;
103
+ export declare const char: (name: string, length?: number) => ColumnBuilder<string>;
104
+ export declare const text: (name: string) => ColumnBuilder<string>;
105
+ export declare const boolean: (name: string) => ColumnBuilder<boolean>;
106
+ export declare const timestamp: (name: string) => ColumnBuilder<Date>;
107
+ export declare const timestamptz: (name: string) => ColumnBuilder<Date>;
108
+ export declare const date: (name: string) => ColumnBuilder<Date>;
109
+ export declare const time: (name: string) => ColumnBuilder<string>;
110
+ export declare const uuid: (name: string) => ColumnBuilder<string>;
111
+ export declare const json: (name: string) => ColumnBuilder<any>;
112
+ export declare const jsonb: (name: string) => ColumnBuilder<any>;
113
+ export declare const bytea: (name: string) => ColumnBuilder<Buffer<ArrayBufferLike>>;
114
+ /**
115
+ * Create an ENUM column
116
+ *
117
+ * @example
118
+ * import { pgEnum, enumColumn } from 'linkgress-orm';
119
+ *
120
+ * const statusEnum = pgEnum('order_status', ['pending', 'processing', 'completed', 'cancelled'] as const);
121
+ * entity.property(e => e.status).hasType(enumColumn('status', statusEnum));
122
+ */
123
+ export declare function enumColumn<T extends {
124
+ name: string;
125
+ values: readonly string[];
126
+ }>(columnName: string, enumDef: T): ColumnBuilder<T['values'][number]>;
127
+ //# sourceMappingURL=column-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"column-builder.d.ts","sourceRoot":"","sources":["../../src/schema/column-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,184 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.bytea = exports.jsonb = exports.json = exports.uuid = exports.time = exports.date = exports.timestamptz = exports.timestamp = exports.boolean = exports.text = exports.char = exports.varchar = exports.doublePrecision = exports.real = exports.numeric = exports.decimal = exports.smallint = exports.bigserial = exports.bigint = exports.serial = exports.integer = exports.ColumnBuilder = void 0;
4
+ exports.enumColumn = enumColumn;
5
+ /**
6
+ * Column builder - fluent API for defining columns
7
+ */
8
+ class ColumnBuilder {
9
+ constructor(name, type) {
10
+ this.config = {
11
+ name,
12
+ type,
13
+ nullable: true,
14
+ primaryKey: false,
15
+ autoIncrement: false,
16
+ unique: false,
17
+ };
18
+ }
19
+ /**
20
+ * Mark column as NOT NULL
21
+ */
22
+ notNull() {
23
+ this.config.nullable = false;
24
+ return this;
25
+ }
26
+ /**
27
+ * Mark column as PRIMARY KEY
28
+ */
29
+ primaryKey() {
30
+ this.config.primaryKey = true;
31
+ this.config.nullable = false;
32
+ return this;
33
+ }
34
+ /**
35
+ * Mark column as AUTO INCREMENT
36
+ */
37
+ autoIncrement() {
38
+ this.config.autoIncrement = true;
39
+ return this;
40
+ }
41
+ /**
42
+ * Mark column as GENERATED ALWAYS AS IDENTITY (modern PostgreSQL identity columns)
43
+ * This is the preferred way over serial/bigserial for auto-incrementing primary keys
44
+ */
45
+ generatedAlwaysAsIdentity(options) {
46
+ this.config.autoIncrement = true;
47
+ this.config.identity = options || {};
48
+ return this;
49
+ }
50
+ /**
51
+ * Mark column as UNIQUE
52
+ */
53
+ unique() {
54
+ this.config.unique = true;
55
+ return this;
56
+ }
57
+ /**
58
+ * Set default value
59
+ */
60
+ default(value) {
61
+ this.config.default = value;
62
+ return this;
63
+ }
64
+ /**
65
+ * Set column length (for varchar, char)
66
+ */
67
+ length(value) {
68
+ this.config.length = value;
69
+ return this;
70
+ }
71
+ /**
72
+ * Set precision and scale (for decimal, numeric)
73
+ */
74
+ precision(precision, scale) {
75
+ this.config.precision = precision;
76
+ this.config.scale = scale;
77
+ return this;
78
+ }
79
+ /**
80
+ * Define foreign key reference
81
+ */
82
+ references(table, column = 'id') {
83
+ this.config.references = { table, column };
84
+ return this;
85
+ }
86
+ /**
87
+ * Set custom type mapper for bidirectional transformation
88
+ */
89
+ mapWith(mapper) {
90
+ this.config.mapper = mapper;
91
+ // If mapper provides dataType, update the column type
92
+ if (mapper.dataType) {
93
+ this.config.type = mapper.dataType();
94
+ }
95
+ return this;
96
+ }
97
+ /**
98
+ * Get the final column configuration
99
+ */
100
+ build() {
101
+ return this.config;
102
+ }
103
+ }
104
+ exports.ColumnBuilder = ColumnBuilder;
105
+ /**
106
+ * Column factory functions
107
+ */
108
+ const integer = (name) => new ColumnBuilder(name, 'integer');
109
+ exports.integer = integer;
110
+ const serial = (name) => new ColumnBuilder(name, 'serial').autoIncrement();
111
+ exports.serial = serial;
112
+ const bigint = (name) => new ColumnBuilder(name, 'bigint');
113
+ exports.bigint = bigint;
114
+ const bigserial = (name) => new ColumnBuilder(name, 'bigserial').autoIncrement();
115
+ exports.bigserial = bigserial;
116
+ const smallint = (name) => new ColumnBuilder(name, 'smallint');
117
+ exports.smallint = smallint;
118
+ const decimal = (name, precision, scale) => {
119
+ const builder = new ColumnBuilder(name, 'decimal');
120
+ if (precision)
121
+ builder.precision(precision, scale);
122
+ return builder;
123
+ };
124
+ exports.decimal = decimal;
125
+ const numeric = (name, precision, scale) => {
126
+ const builder = new ColumnBuilder(name, 'numeric');
127
+ if (precision)
128
+ builder.precision(precision, scale);
129
+ return builder;
130
+ };
131
+ exports.numeric = numeric;
132
+ const real = (name) => new ColumnBuilder(name, 'real');
133
+ exports.real = real;
134
+ const doublePrecision = (name) => new ColumnBuilder(name, 'double precision');
135
+ exports.doublePrecision = doublePrecision;
136
+ const varchar = (name, length) => {
137
+ const builder = new ColumnBuilder(name, 'varchar');
138
+ if (length)
139
+ builder.length(length);
140
+ return builder;
141
+ };
142
+ exports.varchar = varchar;
143
+ const char = (name, length) => {
144
+ const builder = new ColumnBuilder(name, 'char');
145
+ if (length)
146
+ builder.length(length);
147
+ return builder;
148
+ };
149
+ exports.char = char;
150
+ const text = (name) => new ColumnBuilder(name, 'text');
151
+ exports.text = text;
152
+ const boolean = (name) => new ColumnBuilder(name, 'boolean');
153
+ exports.boolean = boolean;
154
+ const timestamp = (name) => new ColumnBuilder(name, 'timestamp');
155
+ exports.timestamp = timestamp;
156
+ const timestamptz = (name) => new ColumnBuilder(name, 'timestamptz');
157
+ exports.timestamptz = timestamptz;
158
+ const date = (name) => new ColumnBuilder(name, 'date');
159
+ exports.date = date;
160
+ const time = (name) => new ColumnBuilder(name, 'time');
161
+ exports.time = time;
162
+ const uuid = (name) => new ColumnBuilder(name, 'uuid');
163
+ exports.uuid = uuid;
164
+ const json = (name) => new ColumnBuilder(name, 'json');
165
+ exports.json = json;
166
+ const jsonb = (name) => new ColumnBuilder(name, 'jsonb');
167
+ exports.jsonb = jsonb;
168
+ const bytea = (name) => new ColumnBuilder(name, 'bytea');
169
+ exports.bytea = bytea;
170
+ /**
171
+ * Create an ENUM column
172
+ *
173
+ * @example
174
+ * import { pgEnum, enumColumn } from 'linkgress-orm';
175
+ *
176
+ * const statusEnum = pgEnum('order_status', ['pending', 'processing', 'completed', 'cancelled'] as const);
177
+ * entity.property(e => e.status).hasType(enumColumn('status', statusEnum));
178
+ */
179
+ function enumColumn(columnName, enumDef) {
180
+ const builder = new ColumnBuilder(columnName, enumDef.name);
181
+ builder.config.enumTypeName = enumDef.name;
182
+ return builder;
183
+ }
184
+ //# sourceMappingURL=column-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"column-builder.js","sourceRoot":"","sources":["../../src/schema/column-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { TableBuilder, TableSchema, InferColumnType } from './table-builder';
2
+ import { CollectionQueryBuilder } from '../query/query-builder';
3
+ /**
4
+ * Infer the complete row type including columns and navigation properties
5
+ */
6
+ export type InferRowType<TBuilder extends TableBuilder<any>> = TBuilder extends TableBuilder<infer TColumns> ? InferRowTypeFromSchema<ReturnType<TBuilder['build']>> : never;
7
+ /**
8
+ * Infer row type from built schema
9
+ */
10
+ type InferRowTypeFromSchema<TSchema extends TableSchema> = {
11
+ readonly [K in keyof TSchema['columns']]: K;
12
+ } & {
13
+ readonly [K in keyof TSchema['relations']]: TSchema['relations'][K]['type'] extends 'many' ? CollectionQueryBuilder<any> : any;
14
+ };
15
+ /**
16
+ * Extract data type from columns
17
+ */
18
+ export type InferDataType<TBuilder extends TableBuilder<any>> = TBuilder extends TableBuilder<infer TColumns> ? {
19
+ [K in keyof TColumns]: InferColumnType<TColumns[K]>;
20
+ } : never;
21
+ /**
22
+ * Create typed row for a specific table builder
23
+ */
24
+ export type TypedTableRow<TBuilder extends TableBuilder<any>> = InferRowType<TBuilder>;
25
+ export {};
26
+ //# sourceMappingURL=inference.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inference.d.ts","sourceRoot":"","sources":["../../src/schema/inference.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAEhE;;GAEG;AACH,MAAM,MAAM,YAAY,CAAC,QAAQ,SAAS,YAAY,CAAC,GAAG,CAAC,IACzD,QAAQ,SAAS,YAAY,CAAC,MAAM,QAAQ,CAAC,GACzC,sBAAsB,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,GACrD,KAAK,CAAC;AAEZ;;GAEG;AACH,KAAK,sBAAsB,CAAC,OAAO,SAAS,WAAW,IAAI;IACzD,QAAQ,EAAE,CAAC,IAAI,MAAM,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC;CAC5C,GAAG;IACF,QAAQ,EAAE,CAAC,IAAI,MAAM,OAAO,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,MAAM,GACtF,sBAAsB,CAAC,GAAG,CAAC,GAC3B,GAAG;CACR,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,aAAa,CAAC,QAAQ,SAAS,YAAY,CAAC,GAAG,CAAC,IAC1D,QAAQ,SAAS,YAAY,CAAC,MAAM,QAAQ,CAAC,GACzC;KACG,CAAC,IAAI,MAAM,QAAQ,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;CACpD,GACD,KAAK,CAAC;AAEZ;;GAEG;AACH,MAAM,MAAM,aAAa,CAAC,QAAQ,SAAS,YAAY,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=inference.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inference.js","sourceRoot":"","sources":["../../src/schema/inference.ts"],"names":[],"mappings":""}