@simplysm/orm-common 13.0.100 → 14.0.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.
Files changed (246) hide show
  1. package/README.md +90 -147
  2. package/dist/create-db-context.d.ts +10 -10
  3. package/dist/create-db-context.js +312 -276
  4. package/dist/create-db-context.js.map +1 -6
  5. package/dist/ddl/column-ddl.d.ts +4 -4
  6. package/dist/ddl/column-ddl.js +41 -35
  7. package/dist/ddl/column-ddl.js.map +1 -6
  8. package/dist/ddl/initialize.d.ts +17 -17
  9. package/dist/ddl/initialize.js +200 -142
  10. package/dist/ddl/initialize.js.map +1 -6
  11. package/dist/ddl/relation-ddl.d.ts +6 -6
  12. package/dist/ddl/relation-ddl.js +55 -48
  13. package/dist/ddl/relation-ddl.js.map +1 -6
  14. package/dist/ddl/schema-ddl.d.ts +4 -4
  15. package/dist/ddl/schema-ddl.js +21 -15
  16. package/dist/ddl/schema-ddl.js.map +1 -6
  17. package/dist/ddl/table-ddl.d.ts +20 -20
  18. package/dist/ddl/table-ddl.js +139 -93
  19. package/dist/ddl/table-ddl.js.map +1 -6
  20. package/dist/define-db-context.js +10 -13
  21. package/dist/define-db-context.js.map +1 -6
  22. package/dist/errors/db-transaction-error.d.ts +15 -15
  23. package/dist/errors/db-transaction-error.d.ts.map +1 -1
  24. package/dist/errors/db-transaction-error.js +53 -19
  25. package/dist/errors/db-transaction-error.js.map +1 -6
  26. package/dist/exec/executable.d.ts +23 -23
  27. package/dist/exec/executable.js +94 -40
  28. package/dist/exec/executable.js.map +1 -6
  29. package/dist/exec/queryable.d.ts +97 -97
  30. package/dist/exec/queryable.js +1310 -1204
  31. package/dist/exec/queryable.js.map +1 -6
  32. package/dist/exec/search-parser.d.ts +31 -31
  33. package/dist/exec/search-parser.d.ts.map +1 -1
  34. package/dist/exec/search-parser.js +158 -59
  35. package/dist/exec/search-parser.js.map +1 -6
  36. package/dist/expr/expr-unit.d.ts +4 -4
  37. package/dist/expr/expr-unit.js +24 -18
  38. package/dist/expr/expr-unit.js.map +1 -6
  39. package/dist/expr/expr.d.ts +108 -108
  40. package/dist/expr/expr.js +1872 -1844
  41. package/dist/expr/expr.js.map +1 -6
  42. package/dist/index.js +23 -1
  43. package/dist/index.js.map +1 -6
  44. package/dist/models/system-migration.js +7 -7
  45. package/dist/models/system-migration.js.map +1 -6
  46. package/dist/query-builder/base/expr-renderer-base.d.ts +10 -10
  47. package/dist/query-builder/base/expr-renderer-base.js +27 -21
  48. package/dist/query-builder/base/expr-renderer-base.js.map +1 -6
  49. package/dist/query-builder/base/query-builder-base.d.ts +21 -21
  50. package/dist/query-builder/base/query-builder-base.d.ts.map +1 -1
  51. package/dist/query-builder/base/query-builder-base.js +90 -80
  52. package/dist/query-builder/base/query-builder-base.js.map +1 -6
  53. package/dist/query-builder/mssql/mssql-expr-renderer.d.ts +5 -5
  54. package/dist/query-builder/mssql/mssql-expr-renderer.d.ts.map +1 -1
  55. package/dist/query-builder/mssql/mssql-expr-renderer.js +447 -420
  56. package/dist/query-builder/mssql/mssql-expr-renderer.js.map +1 -6
  57. package/dist/query-builder/mssql/mssql-query-builder.d.ts +2 -2
  58. package/dist/query-builder/mssql/mssql-query-builder.d.ts.map +1 -1
  59. package/dist/query-builder/mssql/mssql-query-builder.js +483 -443
  60. package/dist/query-builder/mssql/mssql-query-builder.js.map +1 -6
  61. package/dist/query-builder/mysql/mysql-expr-renderer.d.ts +5 -5
  62. package/dist/query-builder/mysql/mysql-expr-renderer.d.ts.map +1 -1
  63. package/dist/query-builder/mysql/mysql-expr-renderer.js +451 -419
  64. package/dist/query-builder/mysql/mysql-expr-renderer.js.map +1 -6
  65. package/dist/query-builder/mysql/mysql-query-builder.d.ts +10 -10
  66. package/dist/query-builder/mysql/mysql-query-builder.d.ts.map +1 -1
  67. package/dist/query-builder/mysql/mysql-query-builder.js +570 -479
  68. package/dist/query-builder/mysql/mysql-query-builder.js.map +1 -6
  69. package/dist/query-builder/postgresql/postgresql-expr-renderer.d.ts +5 -5
  70. package/dist/query-builder/postgresql/postgresql-expr-renderer.d.ts.map +1 -1
  71. package/dist/query-builder/postgresql/postgresql-expr-renderer.js +449 -422
  72. package/dist/query-builder/postgresql/postgresql-expr-renderer.js.map +1 -6
  73. package/dist/query-builder/postgresql/postgresql-query-builder.d.ts +8 -8
  74. package/dist/query-builder/postgresql/postgresql-query-builder.d.ts.map +1 -1
  75. package/dist/query-builder/postgresql/postgresql-query-builder.js +511 -460
  76. package/dist/query-builder/postgresql/postgresql-query-builder.js.map +1 -6
  77. package/dist/query-builder/query-builder.d.ts +1 -1
  78. package/dist/query-builder/query-builder.js +13 -13
  79. package/dist/query-builder/query-builder.js.map +1 -6
  80. package/dist/schema/factory/column-builder.d.ts +84 -84
  81. package/dist/schema/factory/column-builder.js +248 -185
  82. package/dist/schema/factory/column-builder.js.map +1 -6
  83. package/dist/schema/factory/index-builder.d.ts +38 -38
  84. package/dist/schema/factory/index-builder.js +144 -85
  85. package/dist/schema/factory/index-builder.js.map +1 -6
  86. package/dist/schema/factory/relation-builder.d.ts +99 -99
  87. package/dist/schema/factory/relation-builder.d.ts.map +1 -1
  88. package/dist/schema/factory/relation-builder.js +274 -136
  89. package/dist/schema/factory/relation-builder.js.map +1 -6
  90. package/dist/schema/procedure-builder.d.ts +51 -51
  91. package/dist/schema/procedure-builder.d.ts.map +1 -1
  92. package/dist/schema/procedure-builder.js +205 -131
  93. package/dist/schema/procedure-builder.js.map +1 -6
  94. package/dist/schema/table-builder.d.ts +55 -55
  95. package/dist/schema/table-builder.d.ts.map +1 -1
  96. package/dist/schema/table-builder.js +274 -205
  97. package/dist/schema/table-builder.js.map +1 -6
  98. package/dist/schema/view-builder.d.ts +44 -44
  99. package/dist/schema/view-builder.d.ts.map +1 -1
  100. package/dist/schema/view-builder.js +189 -116
  101. package/dist/schema/view-builder.js.map +1 -6
  102. package/dist/types/column.d.ts +21 -21
  103. package/dist/types/column.js +60 -30
  104. package/dist/types/column.js.map +1 -6
  105. package/dist/types/db-context-def.d.ts +9 -9
  106. package/dist/types/db-context-def.js +2 -1
  107. package/dist/types/db-context-def.js.map +1 -6
  108. package/dist/types/db.d.ts +47 -47
  109. package/dist/types/db.js +15 -5
  110. package/dist/types/db.js.map +1 -6
  111. package/dist/types/expr.d.ts +81 -81
  112. package/dist/types/expr.d.ts.map +1 -1
  113. package/dist/types/expr.js +3 -1
  114. package/dist/types/expr.js.map +1 -6
  115. package/dist/types/query-def.d.ts +46 -46
  116. package/dist/types/query-def.d.ts.map +1 -1
  117. package/dist/types/query-def.js +31 -24
  118. package/dist/types/query-def.js.map +1 -6
  119. package/dist/utils/result-parser.d.ts +11 -11
  120. package/dist/utils/result-parser.js +362 -221
  121. package/dist/utils/result-parser.js.map +1 -6
  122. package/docs/core.md +117 -145
  123. package/docs/expression.md +186 -203
  124. package/docs/query-builder.md +75 -42
  125. package/docs/queryable.md +189 -151
  126. package/docs/schema-builders.md +172 -283
  127. package/docs/types.md +229 -173
  128. package/package.json +7 -5
  129. package/src/create-db-context.ts +31 -31
  130. package/src/ddl/column-ddl.ts +4 -4
  131. package/src/ddl/initialize.ts +38 -38
  132. package/src/ddl/relation-ddl.ts +6 -6
  133. package/src/ddl/schema-ddl.ts +4 -4
  134. package/src/ddl/table-ddl.ts +24 -24
  135. package/src/errors/db-transaction-error.ts +13 -13
  136. package/src/exec/executable.ts +25 -25
  137. package/src/exec/queryable.ts +152 -152
  138. package/src/exec/search-parser.ts +50 -50
  139. package/src/expr/expr-unit.ts +4 -4
  140. package/src/expr/expr.ts +118 -118
  141. package/src/index.ts +8 -8
  142. package/src/models/system-migration.ts +1 -1
  143. package/src/query-builder/base/expr-renderer-base.ts +21 -21
  144. package/src/query-builder/base/query-builder-base.ts +33 -33
  145. package/src/query-builder/mssql/mssql-expr-renderer.ts +28 -28
  146. package/src/query-builder/mssql/mssql-query-builder.ts +37 -37
  147. package/src/query-builder/mysql/mysql-expr-renderer.ts +29 -29
  148. package/src/query-builder/mysql/mysql-query-builder.ts +70 -70
  149. package/src/query-builder/postgresql/postgresql-expr-renderer.ts +22 -22
  150. package/src/query-builder/postgresql/postgresql-query-builder.ts +54 -54
  151. package/src/query-builder/query-builder.ts +1 -1
  152. package/src/schema/factory/column-builder.ts +86 -86
  153. package/src/schema/factory/index-builder.ts +38 -38
  154. package/src/schema/factory/relation-builder.ts +102 -102
  155. package/src/schema/procedure-builder.ts +52 -52
  156. package/src/schema/table-builder.ts +56 -56
  157. package/src/schema/view-builder.ts +47 -47
  158. package/src/types/column.ts +24 -24
  159. package/src/types/db-context-def.ts +15 -15
  160. package/src/types/db.ts +50 -50
  161. package/src/types/expr.ts +103 -103
  162. package/src/types/query-def.ts +50 -50
  163. package/src/utils/result-parser.ts +88 -88
  164. package/docs/utilities.md +0 -27
  165. package/tests/db-context/create-db-context.spec.ts +0 -193
  166. package/tests/db-context/define-db-context.spec.ts +0 -17
  167. package/tests/ddl/basic.expected.ts +0 -341
  168. package/tests/ddl/basic.spec.ts +0 -557
  169. package/tests/ddl/column-builder.expected.ts +0 -310
  170. package/tests/ddl/column-builder.spec.ts +0 -525
  171. package/tests/ddl/index-builder.expected.ts +0 -38
  172. package/tests/ddl/index-builder.spec.ts +0 -148
  173. package/tests/ddl/procedure-builder.expected.ts +0 -52
  174. package/tests/ddl/procedure-builder.spec.ts +0 -128
  175. package/tests/ddl/relation-builder.expected.ts +0 -36
  176. package/tests/ddl/relation-builder.spec.ts +0 -171
  177. package/tests/ddl/table-builder.expected.ts +0 -113
  178. package/tests/ddl/table-builder.spec.ts +0 -399
  179. package/tests/ddl/view-builder.expected.ts +0 -38
  180. package/tests/ddl/view-builder.spec.ts +0 -116
  181. package/tests/dml/delete.expected.ts +0 -96
  182. package/tests/dml/delete.spec.ts +0 -127
  183. package/tests/dml/insert.expected.ts +0 -192
  184. package/tests/dml/insert.spec.ts +0 -210
  185. package/tests/dml/update.expected.ts +0 -176
  186. package/tests/dml/update.spec.ts +0 -222
  187. package/tests/dml/upsert.expected.ts +0 -215
  188. package/tests/dml/upsert.spec.ts +0 -190
  189. package/tests/errors/queryable-errors.spec.ts +0 -126
  190. package/tests/escape.spec.ts +0 -59
  191. package/tests/examples/pivot.expected.ts +0 -211
  192. package/tests/examples/pivot.spec.ts +0 -200
  193. package/tests/examples/sampling.expected.ts +0 -69
  194. package/tests/examples/sampling.spec.ts +0 -42
  195. package/tests/examples/unpivot.expected.ts +0 -120
  196. package/tests/examples/unpivot.spec.ts +0 -161
  197. package/tests/exec/search-parser.spec.ts +0 -267
  198. package/tests/executable/basic.expected.ts +0 -18
  199. package/tests/executable/basic.spec.ts +0 -54
  200. package/tests/expr/comparison.expected.ts +0 -282
  201. package/tests/expr/comparison.spec.ts +0 -334
  202. package/tests/expr/conditional.expected.ts +0 -134
  203. package/tests/expr/conditional.spec.ts +0 -249
  204. package/tests/expr/date.expected.ts +0 -332
  205. package/tests/expr/date.spec.ts +0 -459
  206. package/tests/expr/math.expected.ts +0 -62
  207. package/tests/expr/math.spec.ts +0 -59
  208. package/tests/expr/string.expected.ts +0 -218
  209. package/tests/expr/string.spec.ts +0 -300
  210. package/tests/expr/utility.expected.ts +0 -147
  211. package/tests/expr/utility.spec.ts +0 -155
  212. package/tests/select/basic.expected.ts +0 -322
  213. package/tests/select/basic.spec.ts +0 -433
  214. package/tests/select/filter.expected.ts +0 -357
  215. package/tests/select/filter.spec.ts +0 -954
  216. package/tests/select/group.expected.ts +0 -169
  217. package/tests/select/group.spec.ts +0 -159
  218. package/tests/select/join.expected.ts +0 -582
  219. package/tests/select/join.spec.ts +0 -692
  220. package/tests/select/order.expected.ts +0 -150
  221. package/tests/select/order.spec.ts +0 -140
  222. package/tests/select/recursive-cte.expected.ts +0 -244
  223. package/tests/select/recursive-cte.spec.ts +0 -514
  224. package/tests/select/result-meta.spec.ts +0 -270
  225. package/tests/select/subquery.expected.ts +0 -363
  226. package/tests/select/subquery.spec.ts +0 -441
  227. package/tests/select/view.expected.ts +0 -155
  228. package/tests/select/view.spec.ts +0 -235
  229. package/tests/select/window.expected.ts +0 -345
  230. package/tests/select/window.spec.ts +0 -433
  231. package/tests/setup/MockExecutor.ts +0 -18
  232. package/tests/setup/TestDbContext.ts +0 -59
  233. package/tests/setup/models/Company.ts +0 -13
  234. package/tests/setup/models/Employee.ts +0 -10
  235. package/tests/setup/models/MonthlySales.ts +0 -11
  236. package/tests/setup/models/Post.ts +0 -16
  237. package/tests/setup/models/Sales.ts +0 -10
  238. package/tests/setup/models/User.ts +0 -19
  239. package/tests/setup/procedure/GetAllUsers.ts +0 -9
  240. package/tests/setup/procedure/GetUserById.ts +0 -12
  241. package/tests/setup/test-utils.ts +0 -72
  242. package/tests/setup/views/ActiveUsers.ts +0 -8
  243. package/tests/setup/views/UserSummary.ts +0 -11
  244. package/tests/types/nullable-queryable-record.spec.ts +0 -97
  245. package/tests/utils/result-parser-perf.spec.ts +0 -143
  246. package/tests/utils/result-parser.spec.ts +0 -667
package/README.md CHANGED
@@ -1,8 +1,6 @@
1
1
  # @simplysm/orm-common
2
2
 
3
- Simplysm Package - ORM Module (common)
4
-
5
- Dialect-independent ORM for MySQL, MSSQL, and PostgreSQL. Provides schema definition, type-safe query building, expression construction, and query rendering without any direct database dependency. Actual database execution is handled by `@simplysm/orm-node`.
3
+ Database-independent ORM providing schema builders, a type-safe query builder, an expression DSL, and multi-dialect support (MySQL, MSSQL, PostgreSQL).
6
4
 
7
5
  ## Installation
8
6
 
@@ -10,137 +8,23 @@ Dialect-independent ORM for MySQL, MSSQL, and PostgreSQL. Provides schema defini
10
8
  npm install @simplysm/orm-common
11
9
  ```
12
10
 
13
- ## API Overview
14
-
15
- ### Core
16
- | API | Type | Description |
17
- |-----|------|-------------|
18
- | `defineDbContext` | function | Create a DbContext definition (blueprint) |
19
- | `createDbContext` | function | Create a DbContext instance from definition + executor |
20
- | `DbContextDef` | interface | DbContext definition (schema metadata, no runtime state) |
21
- | `DbContextBase` | interface | Internal interface used by Queryable/Executable |
22
- | `DbContextStatus` | type | Connection status: `"ready" \| "connect" \| "transact"` |
23
- | `DbContextInstance` | type | Full DbContext instance with accessors and methods |
24
- | `DbContextConnectionMethods` | interface | connect/connectWithoutTransaction/transaction methods |
25
- | `DbContextDdlMethods` | interface | DDL execution and QueryDef generation methods |
26
- | `DbTransactionError` | class | Standardized transaction error with error codes |
27
- | `DbErrorCode` | enum | Transaction error codes (NO_ACTIVE_TRANSACTION, DEADLOCK, etc.) |
28
-
29
- -> See [docs/core.md](./docs/core.md) for details.
30
-
31
- ### Queryable / Executable
32
- | API | Type | Description |
33
- |-----|------|-------------|
34
- | `Queryable` | class | Type-safe query builder (SELECT/INSERT/UPDATE/DELETE) |
35
- | `queryable` | function | Factory to create Queryable accessor for DbContext |
36
- | `Executable` | class | Stored procedure execution wrapper |
37
- | `executable` | function | Factory to create Executable accessor for DbContext |
38
- | `parseSearchQuery` | function | Parse search query string to SQL LIKE patterns |
39
- | `ParsedSearchQuery` | interface | Search query parsing result (or/must/not arrays) |
40
-
41
- -> See [docs/queryable.md](./docs/queryable.md) for details.
42
-
43
- ### Expression
44
- | API | Type | Description |
45
- |-----|------|-------------|
46
- | `expr` | object | Dialect-independent SQL expression builder |
47
- | `ExprUnit` | class | Type-safe expression wrapper |
48
- | `WhereExprUnit` | class | WHERE clause expression wrapper |
49
- | `ExprInput` | type | Input type accepting ExprUnit or literal |
50
- | `SwitchExprBuilder` | interface | CASE/WHEN expression builder |
51
-
52
- -> See [docs/expression.md](./docs/expression.md) for details.
53
-
54
- ### Schema Builders
55
- | API | Type | Description |
56
- |-----|------|-------------|
57
- | `Table` | function | Table builder factory |
58
- | `TableBuilder` | class | Table definition builder (columns, PK, indexes, relations) |
59
- | `View` | function | View builder factory |
60
- | `ViewBuilder` | class | View definition builder (query, relations) |
61
- | `Procedure` | function | Procedure builder factory |
62
- | `ProcedureBuilder` | class | Stored procedure definition builder |
63
- | `ColumnBuilder` | class | Column definition builder (type, nullable, default) |
64
- | `createColumnFactory` | function | Column type factory (int, varchar, datetime, etc.) |
65
- | `IndexBuilder` | class | Index definition builder |
66
- | `createIndexFactory` | function | Index factory |
67
- | `ForeignKeyBuilder` | class | FK relation builder (N:1, creates DB constraint) |
68
- | `ForeignKeyTargetBuilder` | class | FK reverse-reference builder (1:N) |
69
- | `RelationKeyBuilder` | class | Logical relation builder (N:1, no DB FK) |
70
- | `RelationKeyTargetBuilder` | class | Logical reverse-reference builder (1:N, no DB FK) |
71
- | `createRelationFactory` | function | Relation builder factory |
72
- | `_Migration` | const | Built-in system migration table |
73
- | `ColumnBuilderRecord` | type | Column builder record type |
74
- | `RelationBuilderRecord` | type | Relation builder record type |
75
- | `InferColumns` | type | Infer value types from column builders |
76
- | `InferColumnExprs` | type | Infer expression input types |
77
- | `InferInsertColumns` | type | INSERT type inference |
78
- | `InferUpdateColumns` | type | UPDATE type inference |
79
- | `RequiredInsertKeys` | type | Required column keys for INSERT |
80
- | `OptionalInsertKeys` | type | Optional column keys for INSERT |
81
- | `DataToColumnBuilderRecord` | type | Data record to column builder record |
82
- | `InferDeepRelations` | type | Deep relation type inference |
83
- | `ExtractRelationTarget` | type | Extract N:1 relation target type |
84
- | `ExtractRelationTargetResult` | type | Extract 1:N relation target type |
85
-
86
- -> See [docs/schema-builders.md](./docs/schema-builders.md) for details.
87
-
88
- ### Query Builder
89
- | API | Type | Description |
90
- |-----|------|-------------|
91
- | `createQueryBuilder` | function | Create dialect-specific QueryBuilder |
92
- | `QueryBuilderBase` | class | Abstract QueryDef-to-SQL renderer |
93
- | `ExprRendererBase` | class | Abstract expression-to-SQL renderer |
94
- | `MysqlQueryBuilder` | class | MySQL query builder |
95
- | `MysqlExprRenderer` | class | MySQL expression renderer |
96
- | `MssqlQueryBuilder` | class | MSSQL query builder |
97
- | `MssqlExprRenderer` | class | MSSQL expression renderer |
98
- | `PostgresqlQueryBuilder` | class | PostgreSQL query builder |
99
- | `PostgresqlExprRenderer` | class | PostgreSQL expression renderer |
100
-
101
- -> See [docs/query-builder.md](./docs/query-builder.md) for details.
102
-
103
- ### Types
104
- | API | Type | Description |
105
- |-----|------|-------------|
106
- | `Dialect` | type | Database dialect (`"mysql" \| "mssql" \| "postgresql"`) |
107
- | `dialects` | const | List of all supported dialects |
108
- | `IsolationLevel` | type | Transaction isolation level |
109
- | `DataRecord` | type | Query result data record (supports nesting) |
110
- | `DbContextExecutor` | interface | DB connection and query executor interface |
111
- | `QueryBuildResult` | interface | Built SQL string + metadata |
112
- | `ResultMeta` | interface | Result transformation metadata |
113
- | `Migration` | interface | Database migration definition |
114
- | `DataType` | type | SQL data type definition (14 variants) |
115
- | `ColumnPrimitiveMap` | type | TypeScript type name to actual type mapping |
116
- | `ColumnPrimitiveStr` | type | Column primitive type name |
117
- | `ColumnPrimitive` | type | All column-storable primitive types |
118
- | `ColumnMeta` | interface | Column metadata |
119
- | `DateUnit` | type | Date operation unit |
120
- | `QueryDefObjectName` | interface | DB object name (database.schema.name) |
121
- | `QueryDef` | type | All query definition union type |
122
- | `SelectQueryDef` | interface | SELECT query definition |
123
- | `InsertQueryDef` | interface | INSERT query definition |
124
- | `UpdateQueryDef` | interface | UPDATE query definition |
125
- | `DeleteQueryDef` | interface | DELETE query definition |
126
- | `UpsertQueryDef` | interface | UPSERT query definition |
127
- | `DDL_TYPES` | const | DDL type constants |
128
- | `Expr` | type | All expression union type |
129
- | `WhereExpr` | type | WHERE clause expression union type |
130
- | `WinFn` | type | Window function union type |
131
- | `WinSpec` | interface | Window specification (OVER clause) |
132
- | `parseQueryResult` | function | Transform raw DB results to typed objects |
133
- | `inferColumnPrimitiveStr` | function | Infer ColumnPrimitiveStr from runtime value |
134
- | `dataTypeStrToColumnPrimitiveStr` | const | SQL type to TypeScript type mapping |
135
-
136
- -> See [docs/types.md](./docs/types.md) and [docs/utilities.md](./docs/utilities.md) for details.
137
-
138
- ## Usage Examples
139
-
140
- ### Define Schema and Query
11
+ ## API Reference
12
+
13
+ | Category | Document | Key Exports |
14
+ |---|---|---|
15
+ | Core | [docs/core.md](docs/core.md) | `defineDbContext`, `createDbContext`, `DbContextDef`, `DbContextInstance`, `DbContextBase`, `DbContextStatus`, `DbContextConnectionMethods`, `DbContextDdlMethods`, `DbTransactionError`, `DbErrorCode` |
16
+ | Queryable | [docs/queryable.md](docs/queryable.md) | `Queryable`, `QueryableRecord`, `QueryableWriteRecord`, `NullableQueryableRecord`, `getMatchedPrimaryKeys`, `Executable`, `executable`, `ParsedSearchQuery`, `parseSearchQuery` |
17
+ | Expression | [docs/expression.md](docs/expression.md) | `expr`, `SwitchExprBuilder`, `ExprUnit`, `WhereExprUnit`, `ExprInput` |
18
+ | Schema Builders | [docs/schema-builders.md](docs/schema-builders.md) | `Table`, `TableBuilder`, `View`, `ViewBuilder`, `Procedure`, `ProcedureBuilder`, `ColumnBuilder`, `createColumnFactory`, `IndexBuilder`, `createIndexFactory`, relation builders, type utilities |
19
+ | Query Builder | [docs/query-builder.md](docs/query-builder.md) | `createQueryBuilder`, `QueryBuilderBase`, `ExprRendererBase`, `MysqlQueryBuilder`, `MssqlQueryBuilder`, `PostgresqlQueryBuilder` + renderers |
20
+ | Types | [docs/types.md](docs/types.md) | `Dialect`, `IsolationLevel`, `DataRecord`, `DbContextExecutor`, `ResultMeta`, `Migration`, `QueryBuildResult`, `ColumnMeta`, `DataType`, column primitives, QueryDef types, Expr types, `parseQueryResult`, `_Migration` |
21
+
22
+ ## Quick Start
23
+
24
+ ### Define Schema
141
25
 
142
26
  ```typescript
143
- import { Table, defineDbContext, createDbContext, expr } from "@simplysm/orm-common";
27
+ import { Table, defineDbContext, expr } from "@simplysm/orm-common";
144
28
 
145
29
  // Define tables
146
30
  const User = Table("User")
@@ -150,6 +34,7 @@ const User = Table("User")
150
34
  name: c.varchar(100),
151
35
  email: c.varchar(200).nullable(),
152
36
  status: c.varchar(20).default("active"),
37
+ createdAt: c.datetime(),
153
38
  }))
154
39
  .primaryKey("id")
155
40
  .indexes((i) => [i.index("email").unique()]);
@@ -160,6 +45,7 @@ const Post = Table("Post")
160
45
  id: c.bigint().autoIncrement(),
161
46
  authorId: c.bigint(),
162
47
  title: c.varchar(200),
48
+ content: c.text(),
163
49
  }))
164
50
  .primaryKey("id")
165
51
  .relations((r) => ({
@@ -169,24 +55,81 @@ const Post = Table("Post")
169
55
  // Define DbContext
170
56
  const MyDb = defineDbContext({
171
57
  tables: { user: User, post: Post },
58
+ migrations: [
59
+ {
60
+ name: "20260105_001_init",
61
+ up: async (db) => {
62
+ await db.createTable(User);
63
+ await db.createTable(Post);
64
+ },
65
+ },
66
+ ],
172
67
  });
68
+ ```
69
+
70
+ ### Query Data
71
+
72
+ ```typescript
73
+ // Assume db is a DbContextInstance created via createDbContext()
74
+
75
+ // SELECT with WHERE
76
+ const activeUsers = await db.user()
77
+ .where((u) => [expr.eq(u.status, "active")])
78
+ .orderBy((u) => u.name)
79
+ .execute();
80
+
81
+ // JOIN
82
+ const postsWithAuthor = await db.post()
83
+ .include((p) => p.author)
84
+ .execute();
85
+
86
+ // Aggregate
87
+ const userPostCount = await db.user()
88
+ .select((u) => ({
89
+ name: u.name,
90
+ postCount: expr.count(),
91
+ }))
92
+ .joinSingle("latestPost", (qr, u) =>
93
+ qr.from(Post).where((p) => [expr.eq(p.authorId, u.id)])
94
+ )
95
+ .groupBy((u) => [u.name])
96
+ .execute();
97
+
98
+ // INSERT
99
+ await db.user().insert([
100
+ { name: "Gildong Hong", email: "hong@test.com", createdAt: DateTime.now() },
101
+ ]);
102
+
103
+ // UPDATE
104
+ await db.user()
105
+ .where((u) => [expr.eq(u.id, 1)])
106
+ .update(() => ({
107
+ name: expr.val("string", "New Name"),
108
+ }));
109
+
110
+ // DELETE
111
+ await db.user()
112
+ .where((u) => [expr.eq(u.status, "deleted")])
113
+ .delete();
114
+ ```
173
115
 
174
- // Create instance and query
175
- const db = createDbContext(MyDb, executor, { database: "mydb" });
116
+ ### Search
176
117
 
177
- await db.connect(async () => {
178
- // SELECT with WHERE
179
- const activeUsers = await db.user()
180
- .where((u) => [expr.eq(u.status, "active")])
181
- .orderBy((u) => u.name)
182
- .execute();
118
+ ```typescript
119
+ // Text search with operators
120
+ const results = await db.user()
121
+ .search((u) => [u.name, u.email], "+admin -deleted")
122
+ .execute();
123
+ ```
183
124
 
184
- // INSERT
185
- await db.user().insert([{ name: "John", email: "john@test.com" }]);
125
+ ### Recursive CTE
186
126
 
187
- // JOIN with include
188
- const posts = await db.post()
189
- .include((p) => p.author)
190
- .execute();
191
- });
127
+ ```typescript
128
+ const hierarchy = await db.employee()
129
+ .where((e) => [expr.null(e.managerId)])
130
+ .recursive((cte) =>
131
+ cte.from(Employee)
132
+ .where((e) => [expr.eq(e.managerId, e.self[0].id)])
133
+ )
134
+ .execute();
192
135
  ```
@@ -1,18 +1,18 @@
1
1
  import type { DbContextDef, DbContextInstance } from "./types/db-context-def";
2
2
  import type { DbContextExecutor } from "./types/db";
3
3
  /**
4
- * DbContext instance factory
4
+ * DbContext 인스턴스 팩토리
5
5
  *
6
- * Takes DbContextDef (definition) and DbContextExecutor (executor) and creates
7
- * a complete DbContext instance including queryable accessors, DDL methods,
8
- * and connection/transaction management
6
+ * DbContextDef (정의) DbContextExecutor (실행기) 받아
7
+ * queryable 접근자, DDL 메서드, 연결/트랜잭션 관리를 포함한
8
+ * 완전한 DbContext 인스턴스를 생성한다
9
9
  *
10
- * @param def - Definition object created by defineDbContext()
11
- * @param executor - Query executor (NodeDbContextExecutor, ServiceDbContextExecutor, etc.)
12
- * @param opt - Database options
13
- * @param opt.database - Database name
14
- * @param opt.schema - Schema name (MSSQL: dbo, PostgreSQL: public)
15
- * @returns A complete DbContext instance
10
+ * @param def - defineDbContext()로 생성된 정의 객체
11
+ * @param executor - 쿼리 실행기 (NodeDbContextExecutor, ServiceDbContextExecutor )
12
+ * @param opt - 데이터베이스 옵션
13
+ * @param opt.database - 데이터베이스 이름
14
+ * @param opt.schema - schema 이름 (MSSQL: dbo, PostgreSQL: public)
15
+ * @returns 완전한 DbContext 인스턴스
16
16
  *
17
17
  * @example
18
18
  * ```typescript