@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.
- package/README.md +90 -147
- package/dist/create-db-context.d.ts +10 -10
- package/dist/create-db-context.js +312 -276
- package/dist/create-db-context.js.map +1 -6
- package/dist/ddl/column-ddl.d.ts +4 -4
- package/dist/ddl/column-ddl.js +41 -35
- package/dist/ddl/column-ddl.js.map +1 -6
- package/dist/ddl/initialize.d.ts +17 -17
- package/dist/ddl/initialize.js +200 -142
- package/dist/ddl/initialize.js.map +1 -6
- package/dist/ddl/relation-ddl.d.ts +6 -6
- package/dist/ddl/relation-ddl.js +55 -48
- package/dist/ddl/relation-ddl.js.map +1 -6
- package/dist/ddl/schema-ddl.d.ts +4 -4
- package/dist/ddl/schema-ddl.js +21 -15
- package/dist/ddl/schema-ddl.js.map +1 -6
- package/dist/ddl/table-ddl.d.ts +20 -20
- package/dist/ddl/table-ddl.js +139 -93
- package/dist/ddl/table-ddl.js.map +1 -6
- package/dist/define-db-context.js +10 -13
- package/dist/define-db-context.js.map +1 -6
- package/dist/errors/db-transaction-error.d.ts +15 -15
- package/dist/errors/db-transaction-error.d.ts.map +1 -1
- package/dist/errors/db-transaction-error.js +53 -19
- package/dist/errors/db-transaction-error.js.map +1 -6
- package/dist/exec/executable.d.ts +23 -23
- package/dist/exec/executable.js +94 -40
- package/dist/exec/executable.js.map +1 -6
- package/dist/exec/queryable.d.ts +97 -97
- package/dist/exec/queryable.js +1310 -1204
- package/dist/exec/queryable.js.map +1 -6
- package/dist/exec/search-parser.d.ts +31 -31
- package/dist/exec/search-parser.d.ts.map +1 -1
- package/dist/exec/search-parser.js +158 -59
- package/dist/exec/search-parser.js.map +1 -6
- package/dist/expr/expr-unit.d.ts +4 -4
- package/dist/expr/expr-unit.js +24 -18
- package/dist/expr/expr-unit.js.map +1 -6
- package/dist/expr/expr.d.ts +108 -108
- package/dist/expr/expr.js +1872 -1844
- package/dist/expr/expr.js.map +1 -6
- package/dist/index.js +23 -1
- package/dist/index.js.map +1 -6
- package/dist/models/system-migration.js +7 -7
- package/dist/models/system-migration.js.map +1 -6
- package/dist/query-builder/base/expr-renderer-base.d.ts +10 -10
- package/dist/query-builder/base/expr-renderer-base.js +27 -21
- package/dist/query-builder/base/expr-renderer-base.js.map +1 -6
- package/dist/query-builder/base/query-builder-base.d.ts +21 -21
- package/dist/query-builder/base/query-builder-base.d.ts.map +1 -1
- package/dist/query-builder/base/query-builder-base.js +90 -80
- package/dist/query-builder/base/query-builder-base.js.map +1 -6
- package/dist/query-builder/mssql/mssql-expr-renderer.d.ts +5 -5
- package/dist/query-builder/mssql/mssql-expr-renderer.d.ts.map +1 -1
- package/dist/query-builder/mssql/mssql-expr-renderer.js +447 -420
- package/dist/query-builder/mssql/mssql-expr-renderer.js.map +1 -6
- package/dist/query-builder/mssql/mssql-query-builder.d.ts +2 -2
- package/dist/query-builder/mssql/mssql-query-builder.d.ts.map +1 -1
- package/dist/query-builder/mssql/mssql-query-builder.js +483 -443
- package/dist/query-builder/mssql/mssql-query-builder.js.map +1 -6
- package/dist/query-builder/mysql/mysql-expr-renderer.d.ts +5 -5
- package/dist/query-builder/mysql/mysql-expr-renderer.d.ts.map +1 -1
- package/dist/query-builder/mysql/mysql-expr-renderer.js +451 -419
- package/dist/query-builder/mysql/mysql-expr-renderer.js.map +1 -6
- package/dist/query-builder/mysql/mysql-query-builder.d.ts +10 -10
- package/dist/query-builder/mysql/mysql-query-builder.d.ts.map +1 -1
- package/dist/query-builder/mysql/mysql-query-builder.js +570 -479
- package/dist/query-builder/mysql/mysql-query-builder.js.map +1 -6
- package/dist/query-builder/postgresql/postgresql-expr-renderer.d.ts +5 -5
- package/dist/query-builder/postgresql/postgresql-expr-renderer.d.ts.map +1 -1
- package/dist/query-builder/postgresql/postgresql-expr-renderer.js +449 -422
- package/dist/query-builder/postgresql/postgresql-expr-renderer.js.map +1 -6
- package/dist/query-builder/postgresql/postgresql-query-builder.d.ts +8 -8
- package/dist/query-builder/postgresql/postgresql-query-builder.d.ts.map +1 -1
- package/dist/query-builder/postgresql/postgresql-query-builder.js +511 -460
- package/dist/query-builder/postgresql/postgresql-query-builder.js.map +1 -6
- package/dist/query-builder/query-builder.d.ts +1 -1
- package/dist/query-builder/query-builder.js +13 -13
- package/dist/query-builder/query-builder.js.map +1 -6
- package/dist/schema/factory/column-builder.d.ts +84 -84
- package/dist/schema/factory/column-builder.js +248 -185
- package/dist/schema/factory/column-builder.js.map +1 -6
- package/dist/schema/factory/index-builder.d.ts +38 -38
- package/dist/schema/factory/index-builder.js +144 -85
- package/dist/schema/factory/index-builder.js.map +1 -6
- package/dist/schema/factory/relation-builder.d.ts +99 -99
- package/dist/schema/factory/relation-builder.d.ts.map +1 -1
- package/dist/schema/factory/relation-builder.js +274 -136
- package/dist/schema/factory/relation-builder.js.map +1 -6
- package/dist/schema/procedure-builder.d.ts +51 -51
- package/dist/schema/procedure-builder.d.ts.map +1 -1
- package/dist/schema/procedure-builder.js +205 -131
- package/dist/schema/procedure-builder.js.map +1 -6
- package/dist/schema/table-builder.d.ts +55 -55
- package/dist/schema/table-builder.d.ts.map +1 -1
- package/dist/schema/table-builder.js +274 -205
- package/dist/schema/table-builder.js.map +1 -6
- package/dist/schema/view-builder.d.ts +44 -44
- package/dist/schema/view-builder.d.ts.map +1 -1
- package/dist/schema/view-builder.js +189 -116
- package/dist/schema/view-builder.js.map +1 -6
- package/dist/types/column.d.ts +21 -21
- package/dist/types/column.js +60 -30
- package/dist/types/column.js.map +1 -6
- package/dist/types/db-context-def.d.ts +9 -9
- package/dist/types/db-context-def.js +2 -1
- package/dist/types/db-context-def.js.map +1 -6
- package/dist/types/db.d.ts +47 -47
- package/dist/types/db.js +15 -5
- package/dist/types/db.js.map +1 -6
- package/dist/types/expr.d.ts +81 -81
- package/dist/types/expr.d.ts.map +1 -1
- package/dist/types/expr.js +3 -1
- package/dist/types/expr.js.map +1 -6
- package/dist/types/query-def.d.ts +46 -46
- package/dist/types/query-def.d.ts.map +1 -1
- package/dist/types/query-def.js +31 -24
- package/dist/types/query-def.js.map +1 -6
- package/dist/utils/result-parser.d.ts +11 -11
- package/dist/utils/result-parser.js +362 -221
- package/dist/utils/result-parser.js.map +1 -6
- package/docs/core.md +117 -145
- package/docs/expression.md +186 -203
- package/docs/query-builder.md +75 -42
- package/docs/queryable.md +189 -151
- package/docs/schema-builders.md +172 -283
- package/docs/types.md +229 -173
- package/package.json +7 -5
- package/src/create-db-context.ts +31 -31
- package/src/ddl/column-ddl.ts +4 -4
- package/src/ddl/initialize.ts +38 -38
- package/src/ddl/relation-ddl.ts +6 -6
- package/src/ddl/schema-ddl.ts +4 -4
- package/src/ddl/table-ddl.ts +24 -24
- package/src/errors/db-transaction-error.ts +13 -13
- package/src/exec/executable.ts +25 -25
- package/src/exec/queryable.ts +152 -152
- package/src/exec/search-parser.ts +50 -50
- package/src/expr/expr-unit.ts +4 -4
- package/src/expr/expr.ts +118 -118
- package/src/index.ts +8 -8
- package/src/models/system-migration.ts +1 -1
- package/src/query-builder/base/expr-renderer-base.ts +21 -21
- package/src/query-builder/base/query-builder-base.ts +33 -33
- package/src/query-builder/mssql/mssql-expr-renderer.ts +28 -28
- package/src/query-builder/mssql/mssql-query-builder.ts +37 -37
- package/src/query-builder/mysql/mysql-expr-renderer.ts +29 -29
- package/src/query-builder/mysql/mysql-query-builder.ts +70 -70
- package/src/query-builder/postgresql/postgresql-expr-renderer.ts +22 -22
- package/src/query-builder/postgresql/postgresql-query-builder.ts +54 -54
- package/src/query-builder/query-builder.ts +1 -1
- package/src/schema/factory/column-builder.ts +86 -86
- package/src/schema/factory/index-builder.ts +38 -38
- package/src/schema/factory/relation-builder.ts +102 -102
- package/src/schema/procedure-builder.ts +52 -52
- package/src/schema/table-builder.ts +56 -56
- package/src/schema/view-builder.ts +47 -47
- package/src/types/column.ts +24 -24
- package/src/types/db-context-def.ts +15 -15
- package/src/types/db.ts +50 -50
- package/src/types/expr.ts +103 -103
- package/src/types/query-def.ts +50 -50
- package/src/utils/result-parser.ts +88 -88
- package/docs/utilities.md +0 -27
- package/tests/db-context/create-db-context.spec.ts +0 -193
- package/tests/db-context/define-db-context.spec.ts +0 -17
- package/tests/ddl/basic.expected.ts +0 -341
- package/tests/ddl/basic.spec.ts +0 -557
- package/tests/ddl/column-builder.expected.ts +0 -310
- package/tests/ddl/column-builder.spec.ts +0 -525
- package/tests/ddl/index-builder.expected.ts +0 -38
- package/tests/ddl/index-builder.spec.ts +0 -148
- package/tests/ddl/procedure-builder.expected.ts +0 -52
- package/tests/ddl/procedure-builder.spec.ts +0 -128
- package/tests/ddl/relation-builder.expected.ts +0 -36
- package/tests/ddl/relation-builder.spec.ts +0 -171
- package/tests/ddl/table-builder.expected.ts +0 -113
- package/tests/ddl/table-builder.spec.ts +0 -399
- package/tests/ddl/view-builder.expected.ts +0 -38
- package/tests/ddl/view-builder.spec.ts +0 -116
- package/tests/dml/delete.expected.ts +0 -96
- package/tests/dml/delete.spec.ts +0 -127
- package/tests/dml/insert.expected.ts +0 -192
- package/tests/dml/insert.spec.ts +0 -210
- package/tests/dml/update.expected.ts +0 -176
- package/tests/dml/update.spec.ts +0 -222
- package/tests/dml/upsert.expected.ts +0 -215
- package/tests/dml/upsert.spec.ts +0 -190
- package/tests/errors/queryable-errors.spec.ts +0 -126
- package/tests/escape.spec.ts +0 -59
- package/tests/examples/pivot.expected.ts +0 -211
- package/tests/examples/pivot.spec.ts +0 -200
- package/tests/examples/sampling.expected.ts +0 -69
- package/tests/examples/sampling.spec.ts +0 -42
- package/tests/examples/unpivot.expected.ts +0 -120
- package/tests/examples/unpivot.spec.ts +0 -161
- package/tests/exec/search-parser.spec.ts +0 -267
- package/tests/executable/basic.expected.ts +0 -18
- package/tests/executable/basic.spec.ts +0 -54
- package/tests/expr/comparison.expected.ts +0 -282
- package/tests/expr/comparison.spec.ts +0 -334
- package/tests/expr/conditional.expected.ts +0 -134
- package/tests/expr/conditional.spec.ts +0 -249
- package/tests/expr/date.expected.ts +0 -332
- package/tests/expr/date.spec.ts +0 -459
- package/tests/expr/math.expected.ts +0 -62
- package/tests/expr/math.spec.ts +0 -59
- package/tests/expr/string.expected.ts +0 -218
- package/tests/expr/string.spec.ts +0 -300
- package/tests/expr/utility.expected.ts +0 -147
- package/tests/expr/utility.spec.ts +0 -155
- package/tests/select/basic.expected.ts +0 -322
- package/tests/select/basic.spec.ts +0 -433
- package/tests/select/filter.expected.ts +0 -357
- package/tests/select/filter.spec.ts +0 -954
- package/tests/select/group.expected.ts +0 -169
- package/tests/select/group.spec.ts +0 -159
- package/tests/select/join.expected.ts +0 -582
- package/tests/select/join.spec.ts +0 -692
- package/tests/select/order.expected.ts +0 -150
- package/tests/select/order.spec.ts +0 -140
- package/tests/select/recursive-cte.expected.ts +0 -244
- package/tests/select/recursive-cte.spec.ts +0 -514
- package/tests/select/result-meta.spec.ts +0 -270
- package/tests/select/subquery.expected.ts +0 -363
- package/tests/select/subquery.spec.ts +0 -441
- package/tests/select/view.expected.ts +0 -155
- package/tests/select/view.spec.ts +0 -235
- package/tests/select/window.expected.ts +0 -345
- package/tests/select/window.spec.ts +0 -433
- package/tests/setup/MockExecutor.ts +0 -18
- package/tests/setup/TestDbContext.ts +0 -59
- package/tests/setup/models/Company.ts +0 -13
- package/tests/setup/models/Employee.ts +0 -10
- package/tests/setup/models/MonthlySales.ts +0 -11
- package/tests/setup/models/Post.ts +0 -16
- package/tests/setup/models/Sales.ts +0 -10
- package/tests/setup/models/User.ts +0 -19
- package/tests/setup/procedure/GetAllUsers.ts +0 -9
- package/tests/setup/procedure/GetUserById.ts +0 -12
- package/tests/setup/test-utils.ts +0 -72
- package/tests/setup/views/ActiveUsers.ts +0 -8
- package/tests/setup/views/UserSummary.ts +0 -11
- package/tests/types/nullable-queryable-record.spec.ts +0 -97
- package/tests/utils/result-parser-perf.spec.ts +0 -143
- 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
|
-
|
|
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
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
|
19
|
-
|
|
|
20
|
-
|
|
|
21
|
-
|
|
|
22
|
-
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
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,
|
|
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
|
-
|
|
175
|
-
const db = createDbContext(MyDb, executor, { database: "mydb" });
|
|
116
|
+
### Search
|
|
176
117
|
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
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
|
-
|
|
185
|
-
await db.user().insert([{ name: "John", email: "john@test.com" }]);
|
|
125
|
+
### Recursive CTE
|
|
186
126
|
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
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
|
|
4
|
+
* DbContext 인스턴스 팩토리
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
6
|
+
* DbContextDef (정의)와 DbContextExecutor (실행기)를 받아
|
|
7
|
+
* queryable 접근자, DDL 메서드, 연결/트랜잭션 관리를 포함한
|
|
8
|
+
* 완전한 DbContext 인스턴스를 생성한다
|
|
9
9
|
*
|
|
10
|
-
* @param def -
|
|
11
|
-
* @param executor -
|
|
12
|
-
* @param opt -
|
|
13
|
-
* @param opt.database -
|
|
14
|
-
* @param opt.schema -
|
|
15
|
-
* @returns
|
|
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
|