metal-orm 1.1.11 → 1.1.16

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 (182) hide show
  1. package/README.md +758 -769
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.js.map +1 -1
  4. package/package.json +100 -96
  5. package/scripts/generate-entities/schema.mjs +122 -122
  6. package/scripts/generate-entities/tree-detection.mjs +92 -92
  7. package/scripts/inflection/pt-br.mjs +468 -468
  8. package/scripts/run-eslint.mjs +33 -34
  9. package/scripts/show-sql-seed.sql +102 -0
  10. package/scripts/show-sql.mjs +321 -325
  11. package/src/codegen/naming-strategy.ts +54 -54
  12. package/src/codegen/typescript.ts +482 -482
  13. package/src/core/ast/adapters.ts +1 -1
  14. package/src/core/ast/builders.ts +123 -123
  15. package/src/core/ast/expression-builders.ts +745 -745
  16. package/src/core/ast/expression-nodes.ts +304 -304
  17. package/src/core/ast/expression-visitor.ts +212 -212
  18. package/src/core/ast/expression.ts +20 -20
  19. package/src/core/ast/helpers.ts +14 -14
  20. package/src/core/ast/join.ts +18 -18
  21. package/src/core/ast/query.ts +200 -200
  22. package/src/core/ddl/dialects/base-schema-dialect.ts +1 -1
  23. package/src/core/ddl/dialects/mssql-schema-dialect.ts +1 -1
  24. package/src/core/ddl/dialects/mysql-schema-dialect.ts +1 -1
  25. package/src/core/ddl/dialects/postgres-schema-dialect.ts +1 -1
  26. package/src/core/ddl/dialects/render-reference.test.ts +70 -70
  27. package/src/core/ddl/dialects/sqlite-schema-dialect.ts +1 -1
  28. package/src/core/ddl/introspect/catalogs/index.ts +5 -5
  29. package/src/core/ddl/introspect/catalogs/postgres.ts +146 -146
  30. package/src/core/ddl/introspect/context.ts +15 -15
  31. package/src/core/ddl/introspect/functions/postgres.ts +35 -35
  32. package/src/core/ddl/introspect/registry.ts +40 -40
  33. package/src/core/ddl/introspect/run-select.ts +35 -35
  34. package/src/core/ddl/introspect/utils.ts +56 -56
  35. package/src/core/ddl/naming-strategy.ts +16 -16
  36. package/src/core/ddl/schema-dialect.ts +56 -56
  37. package/src/core/ddl/schema-diff.ts +234 -234
  38. package/src/core/ddl/schema-generator.ts +1 -1
  39. package/src/core/ddl/schema-introspect.ts +25 -25
  40. package/src/core/ddl/sql-writing.ts +171 -171
  41. package/src/core/dialect/abstract.ts +541 -541
  42. package/src/core/dialect/base/cte-compiler.ts +33 -33
  43. package/src/core/dialect/base/function-table-formatter.ts +103 -103
  44. package/src/core/dialect/base/groupby-compiler.ts +21 -21
  45. package/src/core/dialect/base/join-compiler.ts +25 -25
  46. package/src/core/dialect/base/orderby-compiler.ts +35 -35
  47. package/src/core/dialect/base/pagination-strategy.ts +32 -32
  48. package/src/core/dialect/base/returning-strategy.ts +57 -57
  49. package/src/core/dialect/base/sql-dialect.ts +294 -294
  50. package/src/core/dialect/dialect-factory.ts +91 -91
  51. package/src/core/dialect/mssql/functions.ts +120 -120
  52. package/src/core/dialect/mssql/index.ts +317 -317
  53. package/src/core/dialect/mysql/functions.ts +103 -103
  54. package/src/core/dialect/mysql/index.ts +105 -105
  55. package/src/core/dialect/postgres/functions.ts +108 -108
  56. package/src/core/dialect/postgres/index.ts +91 -91
  57. package/src/core/dialect/sqlite/functions.ts +129 -129
  58. package/src/core/dialect/sqlite/index.ts +67 -67
  59. package/src/core/driver/database-driver.ts +19 -19
  60. package/src/core/driver/mssql-driver.ts +23 -23
  61. package/src/core/driver/mysql-driver.ts +23 -23
  62. package/src/core/driver/postgres-driver.ts +23 -23
  63. package/src/core/driver/sqlite-driver.ts +23 -23
  64. package/src/core/execution/db-executor.ts +92 -92
  65. package/src/core/execution/executors/better-sqlite3-executor.ts +90 -90
  66. package/src/core/execution/executors/mssql-executor.ts +184 -184
  67. package/src/core/execution/executors/mysql-executor.ts +88 -88
  68. package/src/core/execution/executors/postgres-executor.ts +26 -26
  69. package/src/core/execution/executors/sqlite-executor.ts +42 -42
  70. package/src/core/execution/pooling/pool-types.ts +30 -30
  71. package/src/core/execution/pooling/pool.ts +275 -275
  72. package/src/core/functions/array.ts +35 -35
  73. package/src/core/functions/control-flow.ts +79 -79
  74. package/src/core/functions/datetime.ts +237 -237
  75. package/src/core/functions/json.ts +70 -70
  76. package/src/core/functions/numeric.ts +297 -297
  77. package/src/core/functions/text.ts +334 -334
  78. package/src/core/functions/types.ts +33 -33
  79. package/src/core/hydration/types.ts +51 -51
  80. package/src/core/sql/sql-operator-config.ts +39 -39
  81. package/src/core/sql/sql.ts +152 -152
  82. package/src/decorators/column-decorator.ts +87 -87
  83. package/src/decorators/decorator-metadata.ts +143 -143
  84. package/src/decorators/entity.ts +93 -93
  85. package/src/decorators/index.ts +39 -39
  86. package/src/decorators/relations.ts +231 -231
  87. package/src/decorators/transformers/built-in/string-transformers.ts +231 -231
  88. package/src/decorators/transformers/transformer-decorators.ts +134 -134
  89. package/src/decorators/transformers/transformer-executor.ts +171 -171
  90. package/src/decorators/transformers/transformer-metadata.ts +73 -73
  91. package/src/decorators/validators/built-in/br-cep-validator.ts +55 -55
  92. package/src/decorators/validators/built-in/br-cnpj-validator.ts +105 -105
  93. package/src/decorators/validators/built-in/br-cpf-validator.ts +103 -103
  94. package/src/decorators/validators/country-validator-registry.ts +64 -64
  95. package/src/decorators/validators/country-validators-decorators.ts +203 -203
  96. package/src/decorators/validators/country-validators.ts +105 -105
  97. package/src/decorators/validators/validator-metadata.ts +59 -59
  98. package/src/dto/dto-types.ts +226 -226
  99. package/src/dto/filter-types.ts +141 -141
  100. package/src/dto/index.ts +95 -95
  101. package/src/dto/openapi/generators/base.ts +29 -29
  102. package/src/dto/openapi/generators/column.ts +37 -37
  103. package/src/dto/openapi/generators/dto.ts +91 -91
  104. package/src/dto/openapi/generators/filter.ts +75 -75
  105. package/src/dto/openapi/generators/nested-dto.ts +618 -618
  106. package/src/dto/openapi/generators/pagination.ts +111 -111
  107. package/src/dto/openapi/generators/relation-filter.ts +228 -228
  108. package/src/dto/openapi/index.ts +12 -12
  109. package/src/dto/openapi/types.ts +101 -101
  110. package/src/dto/openapi/utilities.ts +95 -95
  111. package/src/dto/pagination-utils.ts +150 -150
  112. package/src/dto/transform.ts +197 -197
  113. package/src/index.ts +86 -86
  114. package/src/orm/als.ts +58 -58
  115. package/src/orm/domain-event-bus.ts +119 -119
  116. package/src/orm/entity-context.ts +86 -86
  117. package/src/orm/entity-materializer.ts +159 -159
  118. package/src/orm/entity-meta.ts +97 -97
  119. package/src/orm/entity-registry.ts +39 -39
  120. package/src/orm/entity-relation-cache.ts +39 -39
  121. package/src/orm/execute.ts +194 -194
  122. package/src/orm/execution-context.ts +18 -18
  123. package/src/orm/hydration-context.ts +26 -26
  124. package/src/orm/hydration.ts +112 -112
  125. package/src/orm/identity-map.ts +61 -61
  126. package/src/orm/interceptor-pipeline.ts +16 -16
  127. package/src/orm/lazy-batch/belongs-to-many.ts +119 -119
  128. package/src/orm/lazy-batch/belongs-to.ts +108 -108
  129. package/src/orm/lazy-batch/has-many.ts +69 -69
  130. package/src/orm/lazy-batch/has-one.ts +68 -68
  131. package/src/orm/lazy-batch/shared.ts +125 -125
  132. package/src/orm/orm-session.ts +620 -620
  133. package/src/orm/orm.ts +34 -34
  134. package/src/orm/pooled-executor-factory.ts +121 -121
  135. package/src/orm/query-logger.ts +40 -40
  136. package/src/orm/relation-change-processor.ts +420 -420
  137. package/src/orm/relations/belongs-to.ts +143 -143
  138. package/src/orm/relations/has-many.ts +204 -204
  139. package/src/orm/relations/has-one.ts +174 -174
  140. package/src/orm/relations/many-to-many.ts +288 -288
  141. package/src/orm/relations/morph-many.ts +156 -156
  142. package/src/orm/relations/morph-one.ts +151 -151
  143. package/src/orm/relations/morph-to.ts +162 -162
  144. package/src/orm/runtime-types.ts +92 -92
  145. package/src/orm/save-graph.ts +561 -561
  146. package/src/orm/transaction-runner.ts +24 -24
  147. package/src/orm/unit-of-work.ts +426 -426
  148. package/src/query/index.ts +69 -69
  149. package/src/query/target.ts +46 -46
  150. package/src/query-builder/column-selector.ts +81 -81
  151. package/src/query-builder/delete.ts +141 -141
  152. package/src/query-builder/insert-query-state.ts +149 -149
  153. package/src/query-builder/insert.ts +117 -117
  154. package/src/query-builder/query-ast-service.ts +287 -287
  155. package/src/query-builder/query-resolution.ts +78 -78
  156. package/src/query-builder/raw-column-parser.ts +38 -38
  157. package/src/query-builder/relation-filter-utils.ts +153 -153
  158. package/src/query-builder/relation-join-planner.ts +10 -10
  159. package/src/query-builder/relation-manager.ts +87 -87
  160. package/src/query-builder/relation-projection-helper.ts +102 -102
  161. package/src/query-builder/relation-types.ts +9 -9
  162. package/src/query-builder/relation-utils.ts +15 -15
  163. package/src/query-builder/select/cte-facet.ts +40 -40
  164. package/src/query-builder/select/from-facet.ts +80 -80
  165. package/src/query-builder/select/join-facet.ts +62 -62
  166. package/src/query-builder/select/predicate-facet.ts +104 -104
  167. package/src/query-builder/select/projection-facet.ts +70 -70
  168. package/src/query-builder/select/relation-facet.ts +81 -81
  169. package/src/query-builder/select/setop-facet.ts +36 -36
  170. package/src/query-builder/select-helpers.ts +1 -1
  171. package/src/query-builder/select-query-builder-deps.ts +130 -130
  172. package/src/query-builder/select-query-state.ts +207 -207
  173. package/src/query-builder/update.ts +151 -151
  174. package/src/schema/column-types.ts +322 -322
  175. package/src/schema/table-guards.ts +37 -37
  176. package/src/schema/table.ts +281 -281
  177. package/src/tree/index.ts +13 -13
  178. package/src/tree/nested-set-strategy.ts +545 -545
  179. package/src/tree/tree-decorator.ts +397 -397
  180. package/src/tree/tree-manager.ts +754 -754
  181. package/src/tree/tree-query.ts +427 -427
  182. package/src/tree/tree-types.ts +299 -299
@@ -1,33 +1,33 @@
1
- import { FunctionNode, OperandNode } from '../ast/expression.js';
2
-
3
- /**
4
- * Context provided to function renderers.
5
- */
6
- export interface FunctionRenderContext {
7
- /** The function node being rendered. */
8
- node: FunctionNode;
9
- /** The compiled arguments for the function. */
10
- compiledArgs: string[];
11
- /** Helper to compile additional operands (e.g., separators or ORDER BY columns). */
12
- compileOperand: (operand: OperandNode) => string;
13
- }
14
-
15
- /**
16
- * A function that renders a SQL function call.
17
- * @param ctx - The rendering context.
18
- * @returns The rendered SQL string.
19
- */
20
- export type FunctionRenderer = (ctx: FunctionRenderContext) => string;
21
-
22
- /**
23
- * Strategy for rendering SQL functions in a specific dialect.
24
- */
25
- export interface FunctionStrategy {
26
- /**
27
- * Returns a renderer for a specific function name (e.g. "DATE_ADD").
28
- * Returns undefined if this dialect doesn't support the function.
29
- * @param functionName - The name of the function.
30
- * @returns The renderer function or undefined.
31
- */
32
- getRenderer(functionName: string): FunctionRenderer | undefined;
33
- }
1
+ import { FunctionNode, OperandNode } from '../ast/expression.js';
2
+
3
+ /**
4
+ * Context provided to function renderers.
5
+ */
6
+ export interface FunctionRenderContext {
7
+ /** The function node being rendered. */
8
+ node: FunctionNode;
9
+ /** The compiled arguments for the function. */
10
+ compiledArgs: string[];
11
+ /** Helper to compile additional operands (e.g., separators or ORDER BY columns). */
12
+ compileOperand: (operand: OperandNode) => string;
13
+ }
14
+
15
+ /**
16
+ * A function that renders a SQL function call.
17
+ * @param ctx - The rendering context.
18
+ * @returns The rendered SQL string.
19
+ */
20
+ export type FunctionRenderer = (ctx: FunctionRenderContext) => string;
21
+
22
+ /**
23
+ * Strategy for rendering SQL functions in a specific dialect.
24
+ */
25
+ export interface FunctionStrategy {
26
+ /**
27
+ * Returns a renderer for a specific function name (e.g. "DATE_ADD").
28
+ * Returns undefined if this dialect doesn't support the function.
29
+ * @param functionName - The name of the function.
30
+ * @returns The renderer function or undefined.
31
+ */
32
+ getRenderer(functionName: string): FunctionRenderer | undefined;
33
+ }
@@ -1,8 +1,8 @@
1
- import { RelationType } from '../../schema/relation.js';
2
-
3
- /**
4
- * Plan describing pivot columns needed for hydration
5
- */
1
+ import { RelationType } from '../../schema/relation.js';
2
+
3
+ /**
4
+ * Plan describing pivot columns needed for hydration
5
+ */
6
6
  export interface HydrationPivotPlan {
7
7
  table: string;
8
8
  primaryKey: string;
@@ -11,49 +11,49 @@ export interface HydrationPivotPlan {
11
11
  /** If true, merge pivot columns onto the child entity (non-destructive). */
12
12
  merge?: boolean;
13
13
  }
14
-
15
- /**
16
- * Plan for hydrating relationship data
17
- */
18
- export interface HydrationRelationPlan {
19
- /** Name of the relationship */
20
- name: string;
21
- /** Alias prefix for the relationship */
22
- aliasPrefix: string;
23
- /** Type of relationship */
24
- type: RelationType;
25
- /** Target table name */
26
- targetTable: string;
27
- /** Target table primary key */
28
- targetPrimaryKey: string;
29
- /** Foreign key column */
30
- foreignKey: string;
31
- /** Local key column */
32
- localKey: string;
33
- /** Columns to include */
34
- columns: string[];
35
- /** Optional pivot plan for many-to-many relationships */
36
- pivot?: HydrationPivotPlan;
37
- }
38
-
39
- /**
40
- * Complete hydration plan for a query
41
- */
42
- export interface HydrationPlan {
43
- /** Root table name */
44
- rootTable: string;
45
- /** Root table primary key */
46
- rootPrimaryKey: string;
47
- /** Root table columns */
48
- rootColumns: string[];
49
- /** Relationship hydration plans */
50
- relations: HydrationRelationPlan[];
51
- }
52
-
53
- /**
54
- * Metadata bag for attaching hydration to query ASTs without coupling AST types.
55
- */
56
- export interface HydrationMetadata {
57
- hydration?: HydrationPlan;
58
- [key: string]: unknown;
59
- }
14
+
15
+ /**
16
+ * Plan for hydrating relationship data
17
+ */
18
+ export interface HydrationRelationPlan {
19
+ /** Name of the relationship */
20
+ name: string;
21
+ /** Alias prefix for the relationship */
22
+ aliasPrefix: string;
23
+ /** Type of relationship */
24
+ type: RelationType;
25
+ /** Target table name */
26
+ targetTable: string;
27
+ /** Target table primary key */
28
+ targetPrimaryKey: string;
29
+ /** Foreign key column */
30
+ foreignKey: string;
31
+ /** Local key column */
32
+ localKey: string;
33
+ /** Columns to include */
34
+ columns: string[];
35
+ /** Optional pivot plan for many-to-many relationships */
36
+ pivot?: HydrationPivotPlan;
37
+ }
38
+
39
+ /**
40
+ * Complete hydration plan for a query
41
+ */
42
+ export interface HydrationPlan {
43
+ /** Root table name */
44
+ rootTable: string;
45
+ /** Root table primary key */
46
+ rootPrimaryKey: string;
47
+ /** Root table columns */
48
+ rootColumns: string[];
49
+ /** Relationship hydration plans */
50
+ relations: HydrationRelationPlan[];
51
+ }
52
+
53
+ /**
54
+ * Metadata bag for attaching hydration to query ASTs without coupling AST types.
55
+ */
56
+ export interface HydrationMetadata {
57
+ hydration?: HydrationPlan;
58
+ [key: string]: unknown;
59
+ }
@@ -1,39 +1,39 @@
1
- import { SQL_OPERATORS, SqlOperator } from './sql.js';
2
-
3
- /**
4
- * Configuration for how SQL operators map to TypeScript builder helpers
5
- */
6
- export interface SqlOperatorConfig {
7
- /**
8
- * SQL operator literal
9
- */
10
- sql: SqlOperator;
11
- /**
12
- * Corresponding TypeScript helper name
13
- */
14
- tsName: string;
15
- }
16
-
17
- /**
18
- * Registry of supported SQL operators and their companion helper names
19
- */
20
- export const SQL_OPERATOR_REGISTRY: Record<SqlOperator, SqlOperatorConfig> = {
21
- [SQL_OPERATORS.EQUALS]: { sql: SQL_OPERATORS.EQUALS, tsName: 'eq' },
22
- [SQL_OPERATORS.NOT_EQUALS]: { sql: SQL_OPERATORS.NOT_EQUALS, tsName: 'neq' },
23
- [SQL_OPERATORS.GREATER_THAN]: { sql: SQL_OPERATORS.GREATER_THAN, tsName: 'gt' },
24
- [SQL_OPERATORS.GREATER_OR_EQUAL]: { sql: SQL_OPERATORS.GREATER_OR_EQUAL, tsName: 'gte' },
25
- [SQL_OPERATORS.LESS_THAN]: { sql: SQL_OPERATORS.LESS_THAN, tsName: 'lt' },
26
- [SQL_OPERATORS.LESS_OR_EQUAL]: { sql: SQL_OPERATORS.LESS_OR_EQUAL, tsName: 'lte' },
27
- [SQL_OPERATORS.LIKE]: { sql: SQL_OPERATORS.LIKE, tsName: 'like' },
28
- [SQL_OPERATORS.NOT_LIKE]: { sql: SQL_OPERATORS.NOT_LIKE, tsName: 'notLike' },
29
- [SQL_OPERATORS.IN]: { sql: SQL_OPERATORS.IN, tsName: 'inList' },
30
- [SQL_OPERATORS.NOT_IN]: { sql: SQL_OPERATORS.NOT_IN, tsName: 'notInList' },
31
- [SQL_OPERATORS.IS_NULL]: { sql: SQL_OPERATORS.IS_NULL, tsName: 'isNull' },
32
- [SQL_OPERATORS.IS_NOT_NULL]: { sql: SQL_OPERATORS.IS_NOT_NULL, tsName: 'isNotNull' },
33
- [SQL_OPERATORS.AND]: { sql: SQL_OPERATORS.AND, tsName: 'and' },
34
- [SQL_OPERATORS.OR]: { sql: SQL_OPERATORS.OR, tsName: 'or' },
35
- [SQL_OPERATORS.BETWEEN]: { sql: SQL_OPERATORS.BETWEEN, tsName: 'between' },
36
- [SQL_OPERATORS.NOT_BETWEEN]: { sql: SQL_OPERATORS.NOT_BETWEEN, tsName: 'notBetween' },
37
- [SQL_OPERATORS.EXISTS]: { sql: SQL_OPERATORS.EXISTS, tsName: 'exists' },
38
- [SQL_OPERATORS.NOT_EXISTS]: { sql: SQL_OPERATORS.NOT_EXISTS, tsName: 'notExists' }
39
- };
1
+ import { SQL_OPERATORS, SqlOperator } from './sql.js';
2
+
3
+ /**
4
+ * Configuration for how SQL operators map to TypeScript builder helpers
5
+ */
6
+ export interface SqlOperatorConfig {
7
+ /**
8
+ * SQL operator literal
9
+ */
10
+ sql: SqlOperator;
11
+ /**
12
+ * Corresponding TypeScript helper name
13
+ */
14
+ tsName: string;
15
+ }
16
+
17
+ /**
18
+ * Registry of supported SQL operators and their companion helper names
19
+ */
20
+ export const SQL_OPERATOR_REGISTRY: Record<SqlOperator, SqlOperatorConfig> = {
21
+ [SQL_OPERATORS.EQUALS]: { sql: SQL_OPERATORS.EQUALS, tsName: 'eq' },
22
+ [SQL_OPERATORS.NOT_EQUALS]: { sql: SQL_OPERATORS.NOT_EQUALS, tsName: 'neq' },
23
+ [SQL_OPERATORS.GREATER_THAN]: { sql: SQL_OPERATORS.GREATER_THAN, tsName: 'gt' },
24
+ [SQL_OPERATORS.GREATER_OR_EQUAL]: { sql: SQL_OPERATORS.GREATER_OR_EQUAL, tsName: 'gte' },
25
+ [SQL_OPERATORS.LESS_THAN]: { sql: SQL_OPERATORS.LESS_THAN, tsName: 'lt' },
26
+ [SQL_OPERATORS.LESS_OR_EQUAL]: { sql: SQL_OPERATORS.LESS_OR_EQUAL, tsName: 'lte' },
27
+ [SQL_OPERATORS.LIKE]: { sql: SQL_OPERATORS.LIKE, tsName: 'like' },
28
+ [SQL_OPERATORS.NOT_LIKE]: { sql: SQL_OPERATORS.NOT_LIKE, tsName: 'notLike' },
29
+ [SQL_OPERATORS.IN]: { sql: SQL_OPERATORS.IN, tsName: 'inList' },
30
+ [SQL_OPERATORS.NOT_IN]: { sql: SQL_OPERATORS.NOT_IN, tsName: 'notInList' },
31
+ [SQL_OPERATORS.IS_NULL]: { sql: SQL_OPERATORS.IS_NULL, tsName: 'isNull' },
32
+ [SQL_OPERATORS.IS_NOT_NULL]: { sql: SQL_OPERATORS.IS_NOT_NULL, tsName: 'isNotNull' },
33
+ [SQL_OPERATORS.AND]: { sql: SQL_OPERATORS.AND, tsName: 'and' },
34
+ [SQL_OPERATORS.OR]: { sql: SQL_OPERATORS.OR, tsName: 'or' },
35
+ [SQL_OPERATORS.BETWEEN]: { sql: SQL_OPERATORS.BETWEEN, tsName: 'between' },
36
+ [SQL_OPERATORS.NOT_BETWEEN]: { sql: SQL_OPERATORS.NOT_BETWEEN, tsName: 'notBetween' },
37
+ [SQL_OPERATORS.EXISTS]: { sql: SQL_OPERATORS.EXISTS, tsName: 'exists' },
38
+ [SQL_OPERATORS.NOT_EXISTS]: { sql: SQL_OPERATORS.NOT_EXISTS, tsName: 'notExists' }
39
+ };
@@ -1,152 +1,152 @@
1
- /**
2
- * SQL keywords used in query generation
3
- */
4
- export const SQL_KEYWORDS = {
5
- /** SELECT clause keyword */
6
- SELECT: 'SELECT',
7
- /** FROM clause keyword */
8
- FROM: 'FROM',
9
- /** WHERE clause keyword */
10
- WHERE: 'WHERE',
11
- /** JOIN keyword */
12
- JOIN: 'JOIN',
13
- /** INNER JOIN keyword */
14
- INNER_JOIN: 'INNER JOIN',
15
- /** LEFT JOIN keyword */
16
- LEFT_JOIN: 'LEFT JOIN',
17
- /** RIGHT JOIN keyword */
18
- RIGHT_JOIN: 'RIGHT JOIN',
19
- /** ORDER BY clause keyword */
20
- ORDER_BY: 'ORDER BY',
21
- /** GROUP BY clause keyword */
22
- GROUP_BY: 'GROUP BY',
23
- /** HAVING clause keyword */
24
- HAVING: 'HAVING',
25
- /** DISTINCT keyword */
26
- DISTINCT: 'DISTINCT',
27
- /** EXISTS operator */
28
- EXISTS: 'EXISTS',
29
- /** NOT EXISTS operator */
30
- NOT_EXISTS: 'NOT EXISTS'
31
- } as const;
32
-
33
- /**
34
- * SQL operators used in query conditions
35
- */
36
- export const SQL_OPERATORS = {
37
- /** Equality operator */
38
- EQUALS: '=',
39
- /** Not equals operator */
40
- NOT_EQUALS: '!=',
41
- /** Greater than operator */
42
- GREATER_THAN: '>',
43
- /** Greater than or equal operator */
44
- GREATER_OR_EQUAL: '>=',
45
- /** Less than operator */
46
- LESS_THAN: '<',
47
- /** Less than or equal operator */
48
- LESS_OR_EQUAL: '<=',
49
- /** LIKE pattern matching operator */
50
- LIKE: 'LIKE',
51
- /** NOT LIKE pattern matching operator */
52
- NOT_LIKE: 'NOT LIKE',
53
- /** IN membership operator */
54
- IN: 'IN',
55
- /** NOT IN membership operator */
56
- NOT_IN: 'NOT IN',
57
- /** BETWEEN range operator */
58
- BETWEEN: 'BETWEEN',
59
- /** NOT BETWEEN range operator */
60
- NOT_BETWEEN: 'NOT BETWEEN',
61
- /** IS NULL null check operator */
62
- IS_NULL: 'IS NULL',
63
- /** IS NOT NULL null check operator */
64
- IS_NOT_NULL: 'IS NOT NULL',
65
- /** Logical AND operator */
66
- AND: 'AND',
67
- /** Logical OR operator */
68
- OR: 'OR',
69
- /** EXISTS operator */
70
- EXISTS: 'EXISTS',
71
- /** NOT EXISTS operator */
72
- NOT_EXISTS: 'NOT EXISTS'
73
- } as const;
74
-
75
- /**
76
- * SQL bitwise operators
77
- */
78
- export const BITWISE_OPERATORS = {
79
- /** Bitwise AND */
80
- AND: '&',
81
- /** Bitwise OR */
82
- OR: '|',
83
- /** Bitwise XOR */
84
- XOR: '^',
85
- /** Bitwise Shift Left */
86
- SHIFT_LEFT: '<<',
87
- /** Bitwise Shift Right */
88
- SHIFT_RIGHT: '>>'
89
- } as const;
90
-
91
- /**
92
- * Type representing supported bitwise operators
93
- */
94
- export type BitwiseOperator = (typeof BITWISE_OPERATORS)[keyof typeof BITWISE_OPERATORS];
95
-
96
- /**
97
- * Type representing any supported SQL operator
98
- */
99
- export type SqlOperator = (typeof SQL_OPERATORS)[keyof typeof SQL_OPERATORS];
100
-
101
- /**
102
- * Types of SQL joins supported
103
- */
104
- export const JOIN_KINDS = {
105
- /** INNER JOIN type */
106
- INNER: 'INNER',
107
- /** LEFT JOIN type */
108
- LEFT: 'LEFT',
109
- /** RIGHT JOIN type */
110
- RIGHT: 'RIGHT',
111
- /** CROSS JOIN type */
112
- CROSS: 'CROSS'
113
- } as const;
114
-
115
- /**
116
- * Type representing any supported join kind
117
- */
118
- export type JoinKind = (typeof JOIN_KINDS)[keyof typeof JOIN_KINDS];
119
-
120
- /**
121
- * Ordering directions for result sorting
122
- */
123
- export const ORDER_DIRECTIONS = {
124
- /** Ascending order */
125
- ASC: 'ASC',
126
- /** Descending order */
127
- DESC: 'DESC'
128
- } as const;
129
-
130
- /**
131
- * Type representing any supported order direction
132
- */
133
- export type OrderDirection = (typeof ORDER_DIRECTIONS)[keyof typeof ORDER_DIRECTIONS];
134
-
135
- /**
136
- * Supported database dialects
137
- */
138
- export const SUPPORTED_DIALECTS = {
139
- /** MySQL database dialect */
140
- MYSQL: 'mysql',
141
- /** SQLite database dialect */
142
- SQLITE: 'sqlite',
143
- /** Microsoft SQL Server dialect */
144
- MSSQL: 'mssql',
145
- /** PostgreSQL database dialect */
146
- POSTGRES: 'postgres'
147
- } as const;
148
-
149
- /**
150
- * Type representing any supported database dialect
151
- */
152
- export type DialectName = (typeof SUPPORTED_DIALECTS)[keyof typeof SUPPORTED_DIALECTS];
1
+ /**
2
+ * SQL keywords used in query generation
3
+ */
4
+ export const SQL_KEYWORDS = {
5
+ /** SELECT clause keyword */
6
+ SELECT: 'SELECT',
7
+ /** FROM clause keyword */
8
+ FROM: 'FROM',
9
+ /** WHERE clause keyword */
10
+ WHERE: 'WHERE',
11
+ /** JOIN keyword */
12
+ JOIN: 'JOIN',
13
+ /** INNER JOIN keyword */
14
+ INNER_JOIN: 'INNER JOIN',
15
+ /** LEFT JOIN keyword */
16
+ LEFT_JOIN: 'LEFT JOIN',
17
+ /** RIGHT JOIN keyword */
18
+ RIGHT_JOIN: 'RIGHT JOIN',
19
+ /** ORDER BY clause keyword */
20
+ ORDER_BY: 'ORDER BY',
21
+ /** GROUP BY clause keyword */
22
+ GROUP_BY: 'GROUP BY',
23
+ /** HAVING clause keyword */
24
+ HAVING: 'HAVING',
25
+ /** DISTINCT keyword */
26
+ DISTINCT: 'DISTINCT',
27
+ /** EXISTS operator */
28
+ EXISTS: 'EXISTS',
29
+ /** NOT EXISTS operator */
30
+ NOT_EXISTS: 'NOT EXISTS'
31
+ } as const;
32
+
33
+ /**
34
+ * SQL operators used in query conditions
35
+ */
36
+ export const SQL_OPERATORS = {
37
+ /** Equality operator */
38
+ EQUALS: '=',
39
+ /** Not equals operator */
40
+ NOT_EQUALS: '!=',
41
+ /** Greater than operator */
42
+ GREATER_THAN: '>',
43
+ /** Greater than or equal operator */
44
+ GREATER_OR_EQUAL: '>=',
45
+ /** Less than operator */
46
+ LESS_THAN: '<',
47
+ /** Less than or equal operator */
48
+ LESS_OR_EQUAL: '<=',
49
+ /** LIKE pattern matching operator */
50
+ LIKE: 'LIKE',
51
+ /** NOT LIKE pattern matching operator */
52
+ NOT_LIKE: 'NOT LIKE',
53
+ /** IN membership operator */
54
+ IN: 'IN',
55
+ /** NOT IN membership operator */
56
+ NOT_IN: 'NOT IN',
57
+ /** BETWEEN range operator */
58
+ BETWEEN: 'BETWEEN',
59
+ /** NOT BETWEEN range operator */
60
+ NOT_BETWEEN: 'NOT BETWEEN',
61
+ /** IS NULL null check operator */
62
+ IS_NULL: 'IS NULL',
63
+ /** IS NOT NULL null check operator */
64
+ IS_NOT_NULL: 'IS NOT NULL',
65
+ /** Logical AND operator */
66
+ AND: 'AND',
67
+ /** Logical OR operator */
68
+ OR: 'OR',
69
+ /** EXISTS operator */
70
+ EXISTS: 'EXISTS',
71
+ /** NOT EXISTS operator */
72
+ NOT_EXISTS: 'NOT EXISTS'
73
+ } as const;
74
+
75
+ /**
76
+ * SQL bitwise operators
77
+ */
78
+ export const BITWISE_OPERATORS = {
79
+ /** Bitwise AND */
80
+ AND: '&',
81
+ /** Bitwise OR */
82
+ OR: '|',
83
+ /** Bitwise XOR */
84
+ XOR: '^',
85
+ /** Bitwise Shift Left */
86
+ SHIFT_LEFT: '<<',
87
+ /** Bitwise Shift Right */
88
+ SHIFT_RIGHT: '>>'
89
+ } as const;
90
+
91
+ /**
92
+ * Type representing supported bitwise operators
93
+ */
94
+ export type BitwiseOperator = (typeof BITWISE_OPERATORS)[keyof typeof BITWISE_OPERATORS];
95
+
96
+ /**
97
+ * Type representing any supported SQL operator
98
+ */
99
+ export type SqlOperator = (typeof SQL_OPERATORS)[keyof typeof SQL_OPERATORS];
100
+
101
+ /**
102
+ * Types of SQL joins supported
103
+ */
104
+ export const JOIN_KINDS = {
105
+ /** INNER JOIN type */
106
+ INNER: 'INNER',
107
+ /** LEFT JOIN type */
108
+ LEFT: 'LEFT',
109
+ /** RIGHT JOIN type */
110
+ RIGHT: 'RIGHT',
111
+ /** CROSS JOIN type */
112
+ CROSS: 'CROSS'
113
+ } as const;
114
+
115
+ /**
116
+ * Type representing any supported join kind
117
+ */
118
+ export type JoinKind = (typeof JOIN_KINDS)[keyof typeof JOIN_KINDS];
119
+
120
+ /**
121
+ * Ordering directions for result sorting
122
+ */
123
+ export const ORDER_DIRECTIONS = {
124
+ /** Ascending order */
125
+ ASC: 'ASC',
126
+ /** Descending order */
127
+ DESC: 'DESC'
128
+ } as const;
129
+
130
+ /**
131
+ * Type representing any supported order direction
132
+ */
133
+ export type OrderDirection = (typeof ORDER_DIRECTIONS)[keyof typeof ORDER_DIRECTIONS];
134
+
135
+ /**
136
+ * Supported database dialects
137
+ */
138
+ export const SUPPORTED_DIALECTS = {
139
+ /** MySQL database dialect */
140
+ MYSQL: 'mysql',
141
+ /** SQLite database dialect */
142
+ SQLITE: 'sqlite',
143
+ /** Microsoft SQL Server dialect */
144
+ MSSQL: 'mssql',
145
+ /** PostgreSQL database dialect */
146
+ POSTGRES: 'postgres'
147
+ } as const;
148
+
149
+ /**
150
+ * Type representing any supported database dialect
151
+ */
152
+ export type DialectName = (typeof SUPPORTED_DIALECTS)[keyof typeof SUPPORTED_DIALECTS];