@simplysm/orm-common 13.0.99 → 14.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 (238) hide show
  1. package/dist/create-db-context.d.ts +10 -10
  2. package/dist/create-db-context.js +312 -276
  3. package/dist/create-db-context.js.map +1 -6
  4. package/dist/ddl/column-ddl.d.ts +4 -4
  5. package/dist/ddl/column-ddl.js +41 -35
  6. package/dist/ddl/column-ddl.js.map +1 -6
  7. package/dist/ddl/initialize.d.ts +17 -17
  8. package/dist/ddl/initialize.js +200 -142
  9. package/dist/ddl/initialize.js.map +1 -6
  10. package/dist/ddl/relation-ddl.d.ts +6 -6
  11. package/dist/ddl/relation-ddl.js +55 -48
  12. package/dist/ddl/relation-ddl.js.map +1 -6
  13. package/dist/ddl/schema-ddl.d.ts +4 -4
  14. package/dist/ddl/schema-ddl.js +21 -15
  15. package/dist/ddl/schema-ddl.js.map +1 -6
  16. package/dist/ddl/table-ddl.d.ts +20 -20
  17. package/dist/ddl/table-ddl.js +139 -93
  18. package/dist/ddl/table-ddl.js.map +1 -6
  19. package/dist/define-db-context.js +10 -13
  20. package/dist/define-db-context.js.map +1 -6
  21. package/dist/errors/db-transaction-error.d.ts +15 -15
  22. package/dist/errors/db-transaction-error.d.ts.map +1 -1
  23. package/dist/errors/db-transaction-error.js +53 -19
  24. package/dist/errors/db-transaction-error.js.map +1 -6
  25. package/dist/exec/executable.d.ts +23 -23
  26. package/dist/exec/executable.js +94 -40
  27. package/dist/exec/executable.js.map +1 -6
  28. package/dist/exec/queryable.d.ts +97 -97
  29. package/dist/exec/queryable.js +1310 -1204
  30. package/dist/exec/queryable.js.map +1 -6
  31. package/dist/exec/search-parser.d.ts +31 -31
  32. package/dist/exec/search-parser.d.ts.map +1 -1
  33. package/dist/exec/search-parser.js +158 -59
  34. package/dist/exec/search-parser.js.map +1 -6
  35. package/dist/expr/expr-unit.d.ts +4 -4
  36. package/dist/expr/expr-unit.js +24 -18
  37. package/dist/expr/expr-unit.js.map +1 -6
  38. package/dist/expr/expr.d.ts +6 -6
  39. package/dist/expr/expr.js +1872 -1844
  40. package/dist/expr/expr.js.map +1 -6
  41. package/dist/index.js +23 -1
  42. package/dist/index.js.map +1 -6
  43. package/dist/models/system-migration.js +7 -7
  44. package/dist/models/system-migration.js.map +1 -6
  45. package/dist/query-builder/base/expr-renderer-base.d.ts +10 -10
  46. package/dist/query-builder/base/expr-renderer-base.js +27 -21
  47. package/dist/query-builder/base/expr-renderer-base.js.map +1 -6
  48. package/dist/query-builder/base/query-builder-base.d.ts +21 -21
  49. package/dist/query-builder/base/query-builder-base.d.ts.map +1 -1
  50. package/dist/query-builder/base/query-builder-base.js +90 -80
  51. package/dist/query-builder/base/query-builder-base.js.map +1 -6
  52. package/dist/query-builder/mssql/mssql-expr-renderer.d.ts +4 -4
  53. package/dist/query-builder/mssql/mssql-expr-renderer.d.ts.map +1 -1
  54. package/dist/query-builder/mssql/mssql-expr-renderer.js +447 -420
  55. package/dist/query-builder/mssql/mssql-expr-renderer.js.map +1 -6
  56. package/dist/query-builder/mssql/mssql-query-builder.js +483 -443
  57. package/dist/query-builder/mssql/mssql-query-builder.js.map +1 -6
  58. package/dist/query-builder/mysql/mysql-expr-renderer.d.ts +4 -4
  59. package/dist/query-builder/mysql/mysql-expr-renderer.d.ts.map +1 -1
  60. package/dist/query-builder/mysql/mysql-expr-renderer.js +451 -419
  61. package/dist/query-builder/mysql/mysql-expr-renderer.js.map +1 -6
  62. package/dist/query-builder/mysql/mysql-query-builder.js +570 -479
  63. package/dist/query-builder/mysql/mysql-query-builder.js.map +1 -6
  64. package/dist/query-builder/postgresql/postgresql-expr-renderer.d.ts +4 -4
  65. package/dist/query-builder/postgresql/postgresql-expr-renderer.d.ts.map +1 -1
  66. package/dist/query-builder/postgresql/postgresql-expr-renderer.js +449 -422
  67. package/dist/query-builder/postgresql/postgresql-expr-renderer.js.map +1 -6
  68. package/dist/query-builder/postgresql/postgresql-query-builder.js +511 -460
  69. package/dist/query-builder/postgresql/postgresql-query-builder.js.map +1 -6
  70. package/dist/query-builder/query-builder.d.ts +1 -1
  71. package/dist/query-builder/query-builder.js +13 -13
  72. package/dist/query-builder/query-builder.js.map +1 -6
  73. package/dist/schema/factory/column-builder.d.ts +84 -84
  74. package/dist/schema/factory/column-builder.js +248 -185
  75. package/dist/schema/factory/column-builder.js.map +1 -6
  76. package/dist/schema/factory/index-builder.d.ts +38 -38
  77. package/dist/schema/factory/index-builder.js +144 -85
  78. package/dist/schema/factory/index-builder.js.map +1 -6
  79. package/dist/schema/factory/relation-builder.d.ts +91 -91
  80. package/dist/schema/factory/relation-builder.d.ts.map +1 -1
  81. package/dist/schema/factory/relation-builder.js +274 -136
  82. package/dist/schema/factory/relation-builder.js.map +1 -6
  83. package/dist/schema/procedure-builder.d.ts +51 -51
  84. package/dist/schema/procedure-builder.d.ts.map +1 -1
  85. package/dist/schema/procedure-builder.js +205 -131
  86. package/dist/schema/procedure-builder.js.map +1 -6
  87. package/dist/schema/table-builder.d.ts +55 -55
  88. package/dist/schema/table-builder.d.ts.map +1 -1
  89. package/dist/schema/table-builder.js +274 -205
  90. package/dist/schema/table-builder.js.map +1 -6
  91. package/dist/schema/view-builder.d.ts +44 -44
  92. package/dist/schema/view-builder.d.ts.map +1 -1
  93. package/dist/schema/view-builder.js +189 -116
  94. package/dist/schema/view-builder.js.map +1 -6
  95. package/dist/types/column.js +60 -30
  96. package/dist/types/column.js.map +1 -6
  97. package/dist/types/db-context-def.d.ts +9 -9
  98. package/dist/types/db-context-def.js +2 -1
  99. package/dist/types/db-context-def.js.map +1 -6
  100. package/dist/types/db.d.ts +47 -47
  101. package/dist/types/db.js +15 -5
  102. package/dist/types/db.js.map +1 -6
  103. package/dist/types/expr.d.ts +81 -81
  104. package/dist/types/expr.d.ts.map +1 -1
  105. package/dist/types/expr.js +3 -1
  106. package/dist/types/expr.js.map +1 -6
  107. package/dist/types/query-def.d.ts +46 -46
  108. package/dist/types/query-def.d.ts.map +1 -1
  109. package/dist/types/query-def.js +31 -24
  110. package/dist/types/query-def.js.map +1 -6
  111. package/dist/utils/result-parser.js +362 -221
  112. package/dist/utils/result-parser.js.map +1 -6
  113. package/package.json +5 -7
  114. package/src/create-db-context.ts +31 -31
  115. package/src/ddl/column-ddl.ts +4 -4
  116. package/src/ddl/initialize.ts +38 -38
  117. package/src/ddl/relation-ddl.ts +6 -6
  118. package/src/ddl/schema-ddl.ts +4 -4
  119. package/src/ddl/table-ddl.ts +24 -24
  120. package/src/errors/db-transaction-error.ts +13 -13
  121. package/src/exec/executable.ts +25 -25
  122. package/src/exec/queryable.ts +134 -134
  123. package/src/exec/search-parser.ts +50 -50
  124. package/src/expr/expr-unit.ts +4 -4
  125. package/src/expr/expr.ts +13 -13
  126. package/src/index.ts +8 -8
  127. package/src/models/system-migration.ts +1 -1
  128. package/src/query-builder/base/expr-renderer-base.ts +21 -21
  129. package/src/query-builder/base/query-builder-base.ts +33 -33
  130. package/src/query-builder/mssql/mssql-expr-renderer.ts +11 -11
  131. package/src/query-builder/mssql/mssql-query-builder.ts +11 -11
  132. package/src/query-builder/mysql/mysql-expr-renderer.ts +15 -15
  133. package/src/query-builder/mysql/mysql-query-builder.ts +3 -3
  134. package/src/query-builder/postgresql/postgresql-expr-renderer.ts +9 -9
  135. package/src/query-builder/postgresql/postgresql-query-builder.ts +7 -7
  136. package/src/query-builder/query-builder.ts +1 -1
  137. package/src/schema/factory/column-builder.ts +86 -86
  138. package/src/schema/factory/index-builder.ts +38 -38
  139. package/src/schema/factory/relation-builder.ts +93 -93
  140. package/src/schema/procedure-builder.ts +52 -52
  141. package/src/schema/table-builder.ts +56 -56
  142. package/src/schema/view-builder.ts +45 -45
  143. package/src/types/column.ts +1 -1
  144. package/src/types/db-context-def.ts +15 -15
  145. package/src/types/db.ts +50 -50
  146. package/src/types/expr.ts +103 -103
  147. package/src/types/query-def.ts +50 -50
  148. package/src/utils/result-parser.ts +39 -39
  149. package/README.md +0 -192
  150. package/docs/core.md +0 -234
  151. package/docs/expression.md +0 -234
  152. package/docs/query-builder.md +0 -93
  153. package/docs/queryable.md +0 -198
  154. package/docs/schema-builders.md +0 -463
  155. package/docs/types.md +0 -445
  156. package/docs/utilities.md +0 -27
  157. package/tests/db-context/create-db-context.spec.ts +0 -193
  158. package/tests/db-context/define-db-context.spec.ts +0 -17
  159. package/tests/ddl/basic.expected.ts +0 -341
  160. package/tests/ddl/basic.spec.ts +0 -557
  161. package/tests/ddl/column-builder.expected.ts +0 -310
  162. package/tests/ddl/column-builder.spec.ts +0 -525
  163. package/tests/ddl/index-builder.expected.ts +0 -38
  164. package/tests/ddl/index-builder.spec.ts +0 -148
  165. package/tests/ddl/procedure-builder.expected.ts +0 -52
  166. package/tests/ddl/procedure-builder.spec.ts +0 -128
  167. package/tests/ddl/relation-builder.expected.ts +0 -36
  168. package/tests/ddl/relation-builder.spec.ts +0 -171
  169. package/tests/ddl/table-builder.expected.ts +0 -113
  170. package/tests/ddl/table-builder.spec.ts +0 -399
  171. package/tests/ddl/view-builder.expected.ts +0 -38
  172. package/tests/ddl/view-builder.spec.ts +0 -116
  173. package/tests/dml/delete.expected.ts +0 -96
  174. package/tests/dml/delete.spec.ts +0 -127
  175. package/tests/dml/insert.expected.ts +0 -192
  176. package/tests/dml/insert.spec.ts +0 -210
  177. package/tests/dml/update.expected.ts +0 -176
  178. package/tests/dml/update.spec.ts +0 -222
  179. package/tests/dml/upsert.expected.ts +0 -215
  180. package/tests/dml/upsert.spec.ts +0 -190
  181. package/tests/errors/queryable-errors.spec.ts +0 -126
  182. package/tests/escape.spec.ts +0 -59
  183. package/tests/examples/pivot.expected.ts +0 -211
  184. package/tests/examples/pivot.spec.ts +0 -200
  185. package/tests/examples/sampling.expected.ts +0 -69
  186. package/tests/examples/sampling.spec.ts +0 -42
  187. package/tests/examples/unpivot.expected.ts +0 -120
  188. package/tests/examples/unpivot.spec.ts +0 -161
  189. package/tests/exec/search-parser.spec.ts +0 -267
  190. package/tests/executable/basic.expected.ts +0 -18
  191. package/tests/executable/basic.spec.ts +0 -54
  192. package/tests/expr/comparison.expected.ts +0 -282
  193. package/tests/expr/comparison.spec.ts +0 -334
  194. package/tests/expr/conditional.expected.ts +0 -134
  195. package/tests/expr/conditional.spec.ts +0 -249
  196. package/tests/expr/date.expected.ts +0 -332
  197. package/tests/expr/date.spec.ts +0 -459
  198. package/tests/expr/math.expected.ts +0 -62
  199. package/tests/expr/math.spec.ts +0 -59
  200. package/tests/expr/string.expected.ts +0 -218
  201. package/tests/expr/string.spec.ts +0 -300
  202. package/tests/expr/utility.expected.ts +0 -147
  203. package/tests/expr/utility.spec.ts +0 -155
  204. package/tests/select/basic.expected.ts +0 -322
  205. package/tests/select/basic.spec.ts +0 -433
  206. package/tests/select/filter.expected.ts +0 -357
  207. package/tests/select/filter.spec.ts +0 -954
  208. package/tests/select/group.expected.ts +0 -169
  209. package/tests/select/group.spec.ts +0 -159
  210. package/tests/select/join.expected.ts +0 -582
  211. package/tests/select/join.spec.ts +0 -692
  212. package/tests/select/order.expected.ts +0 -150
  213. package/tests/select/order.spec.ts +0 -140
  214. package/tests/select/recursive-cte.expected.ts +0 -244
  215. package/tests/select/recursive-cte.spec.ts +0 -514
  216. package/tests/select/result-meta.spec.ts +0 -270
  217. package/tests/select/subquery.expected.ts +0 -363
  218. package/tests/select/subquery.spec.ts +0 -441
  219. package/tests/select/view.expected.ts +0 -155
  220. package/tests/select/view.spec.ts +0 -235
  221. package/tests/select/window.expected.ts +0 -345
  222. package/tests/select/window.spec.ts +0 -433
  223. package/tests/setup/MockExecutor.ts +0 -18
  224. package/tests/setup/TestDbContext.ts +0 -59
  225. package/tests/setup/models/Company.ts +0 -13
  226. package/tests/setup/models/Employee.ts +0 -10
  227. package/tests/setup/models/MonthlySales.ts +0 -11
  228. package/tests/setup/models/Post.ts +0 -16
  229. package/tests/setup/models/Sales.ts +0 -10
  230. package/tests/setup/models/User.ts +0 -19
  231. package/tests/setup/procedure/GetAllUsers.ts +0 -9
  232. package/tests/setup/procedure/GetUserById.ts +0 -12
  233. package/tests/setup/test-utils.ts +0 -72
  234. package/tests/setup/views/ActiveUsers.ts +0 -8
  235. package/tests/setup/views/UserSummary.ts +0 -11
  236. package/tests/types/nullable-queryable-record.spec.ts +0 -97
  237. package/tests/utils/result-parser-perf.spec.ts +0 -143
  238. package/tests/utils/result-parser.spec.ts +0 -667
@@ -1,341 +0,0 @@
1
- import { mysql, pgsql, tsql } from "@simplysm/core-common";
2
- import type { ExpectedSql } from "../setup/test-utils";
3
-
4
- //#region ========== Database ==========
5
-
6
- export const clearSchema: ExpectedSql = {
7
- mysql: mysql`
8
- SET FOREIGN_KEY_CHECKS = 0;
9
- SET @tables = NULL;
10
- SELECT GROUP_CONCAT(table_name) INTO @tables FROM information_schema.tables WHERE table_schema = 'TestDb';
11
- SET @drop_stmt = IF(@tables IS NULL, 'SELECT 1', CONCAT('DROP TABLE IF EXISTS ', @tables));
12
- PREPARE stmt FROM @drop_stmt;
13
- EXECUTE stmt;
14
- DEALLOCATE PREPARE stmt;
15
- SET FOREIGN_KEY_CHECKS = 1
16
- `,
17
- mssql: tsql`
18
- DECLARE @sql NVARCHAR(MAX);
19
- SET @sql = N'';
20
-
21
- -- Drop FK constraints
22
- SELECT @sql = @sql + N'ALTER TABLE ' + QUOTENAME(OBJECT_SCHEMA_NAME(parent_object_id)) + '.' + QUOTENAME(OBJECT_NAME(parent_object_id)) + N' DROP CONSTRAINT ' + QUOTENAME(name) + N';' + CHAR(13)
23
- FROM [TestDb].sys.foreign_keys
24
- WHERE OBJECT_SCHEMA_NAME(parent_object_id) = 'TestSchema';
25
-
26
- -- Drop tables
27
- SELECT @sql = @sql + N'DROP TABLE ' + QUOTENAME(SCHEMA_NAME(schema_id)) + '.' + QUOTENAME(name) + N';' + CHAR(13)
28
- FROM [TestDb].sys.tables
29
- WHERE SCHEMA_NAME(schema_id) = 'TestSchema';
30
-
31
- -- Drop views
32
- SELECT @sql = @sql + N'DROP VIEW ' + QUOTENAME(SCHEMA_NAME(schema_id)) + '.' + QUOTENAME(name) + N';' + CHAR(13)
33
- FROM [TestDb].sys.views
34
- WHERE schema_id = SCHEMA_ID('TestSchema');
35
-
36
- -- Drop procedures
37
- SELECT @sql = @sql + N'DROP PROCEDURE ' + QUOTENAME(SCHEMA_NAME(schema_id)) + '.' + QUOTENAME(name) + N';' + CHAR(13)
38
- FROM [TestDb].sys.procedures
39
- WHERE SCHEMA_NAME(schema_id) = 'TestSchema';
40
-
41
- EXEC sp_executesql @sql;
42
- `,
43
- postgresql: pgsql`
44
- DO $$
45
- DECLARE
46
- r RECORD;
47
- BEGIN
48
- -- Drop FK constraints
49
- FOR r IN (SELECT conname, conrelid::regclass AS tablename
50
- FROM pg_constraint
51
- WHERE contype = 'f' AND connamespace = 'TestSchema'::regnamespace)
52
- LOOP
53
- EXECUTE 'ALTER TABLE ' || r.tablename || ' DROP CONSTRAINT ' || quote_ident(r.conname);
54
- END LOOP;
55
-
56
- -- Drop tables
57
- FOR r IN (SELECT tablename FROM pg_tables WHERE schemaname = 'TestSchema')
58
- LOOP
59
- EXECUTE 'DROP TABLE IF EXISTS ' || quote_ident(r.tablename) || ' CASCADE';
60
- END LOOP;
61
-
62
- -- Drop views
63
- FOR r IN (SELECT viewname FROM pg_views WHERE schemaname = 'TestSchema')
64
- LOOP
65
- EXECUTE 'DROP VIEW IF EXISTS ' || quote_ident(r.viewname) || ' CASCADE';
66
- END LOOP;
67
-
68
- -- Drop functions
69
- FOR r IN (SELECT proname, pg_get_function_identity_arguments(oid) AS args
70
- FROM pg_proc WHERE pronamespace = 'TestSchema'::regnamespace)
71
- LOOP
72
- EXECUTE 'DROP FUNCTION IF EXISTS ' || quote_ident(r.proname) || '(' || r.args || ') CASCADE';
73
- END LOOP;
74
- END $$
75
- `,
76
- };
77
-
78
- export const schemaExists: ExpectedSql = {
79
- mysql: mysql`SELECT SCHEMA_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = 'TestDb'`,
80
- mssql: tsql`
81
- DECLARE @result NVARCHAR(MAX) = NULL;
82
- IF EXISTS (SELECT 1 FROM sys.databases WHERE name = 'TestDb')
83
- BEGIN
84
- DECLARE @sql NVARCHAR(MAX) = N'SELECT @result = name FROM ' + QUOTENAME('TestDb') + N'.sys.schemas WHERE name = ''TestSchema''';
85
- EXEC sp_executesql @sql, N'@result NVARCHAR(MAX) OUTPUT', @result OUTPUT;
86
- END
87
- SELECT @result AS name WHERE @result IS NOT NULL
88
- `,
89
- postgresql: pgsql`SELECT nspname FROM pg_namespace WHERE nspname = 'TestSchema'`,
90
- };
91
-
92
- //#endregion
93
-
94
- //#region ========== Table ==========
95
-
96
- export const createTable: ExpectedSql = {
97
- mysql: mysql`
98
- CREATE TABLE \`TestDb\`.\`User\` (
99
- \`id\` BIGINT NOT NULL AUTO_INCREMENT,
100
- \`name\` VARCHAR(100) NOT NULL,
101
- \`email\` VARCHAR(200) NULL,
102
- \`age\` INT NULL,
103
- \`isActive\` BOOLEAN NOT NULL DEFAULT TRUE,
104
- \`companyId\` BIGINT NULL,
105
- \`createdAt\` DATETIME NOT NULL,
106
- CONSTRAINT \`PK_User\` PRIMARY KEY (\`id\`)
107
- )
108
- `,
109
- mssql: tsql`
110
- CREATE TABLE [TestDb].[TestSchema].[User] (
111
- [id] BIGINT NOT NULL IDENTITY(1,1),
112
- [name] NVARCHAR(100) NOT NULL,
113
- [email] NVARCHAR(200) NULL,
114
- [age] INT NULL,
115
- [isActive] BIT NOT NULL DEFAULT 1,
116
- [companyId] BIGINT NULL,
117
- [createdAt] DATETIME2 NOT NULL,
118
- CONSTRAINT [PK_User] PRIMARY KEY ([id])
119
- )
120
- `,
121
- postgresql: pgsql`
122
- CREATE TABLE "TestSchema"."User" (
123
- "id" BIGINT NOT NULL GENERATED BY DEFAULT AS IDENTITY,
124
- "name" VARCHAR(100) NOT NULL,
125
- "email" VARCHAR(200) NULL,
126
- "age" INTEGER NULL,
127
- "isActive" BOOLEAN NOT NULL DEFAULT TRUE,
128
- "companyId" BIGINT NULL,
129
- "createdAt" TIMESTAMP NOT NULL,
130
- CONSTRAINT "PK_User" PRIMARY KEY ("id")
131
- )
132
- `,
133
- };
134
-
135
- export const truncate: ExpectedSql = {
136
- mysql: mysql`TRUNCATE TABLE \`TestDb\`.\`User\``,
137
- mssql: tsql`TRUNCATE TABLE [TestDb].[TestSchema].[User]`,
138
- postgresql: pgsql`TRUNCATE TABLE "TestSchema"."User" RESTART IDENTITY`,
139
- };
140
-
141
- export const switchFkOn: ExpectedSql = {
142
- mysql: mysql`SET FOREIGN_KEY_CHECKS = 1`,
143
- mssql: tsql`ALTER TABLE [TestDb].[TestSchema].[User] WITH CHECK CHECK CONSTRAINT ALL`,
144
- postgresql: pgsql`ALTER TABLE "TestSchema"."User" ENABLE TRIGGER ALL`,
145
- };
146
-
147
- export const switchFkOff: ExpectedSql = {
148
- mysql: mysql`SET FOREIGN_KEY_CHECKS = 0`,
149
- mssql: tsql`ALTER TABLE [TestDb].[TestSchema].[User] NOCHECK CONSTRAINT ALL`,
150
- postgresql: pgsql`ALTER TABLE "TestSchema"."User" DISABLE TRIGGER ALL`,
151
- };
152
-
153
- export const dropTable: ExpectedSql = {
154
- mysql: mysql`DROP TABLE \`TestDb\`.\`User\``,
155
- mssql: tsql`DROP TABLE [TestDb].[TestSchema].[User]`,
156
- postgresql: pgsql`DROP TABLE "TestSchema"."User"`,
157
- };
158
-
159
- export const renameTable: ExpectedSql = {
160
- mysql: mysql`RENAME TABLE \`TestDb\`.\`User\` TO \`Member\``,
161
- mssql: tsql`EXEC sp_rename '[TestDb].[TestSchema].[User]', 'Member'`,
162
- postgresql: pgsql`ALTER TABLE "TestSchema"."User" RENAME TO "Member"`,
163
- };
164
-
165
- //#endregion
166
-
167
- //#region ========== Column ==========
168
-
169
- export const addColumn: ExpectedSql = {
170
- mysql: mysql`ALTER TABLE \`TestDb\`.\`User\` ADD COLUMN \`nickname\` VARCHAR(50) NULL`,
171
- mssql: tsql`ALTER TABLE [TestDb].[TestSchema].[User] ADD [nickname] NVARCHAR(50) NULL`,
172
- postgresql: pgsql`ALTER TABLE "TestSchema"."User" ADD COLUMN "nickname" VARCHAR(50) NULL`,
173
- };
174
-
175
- export const addColumnWithDefault: ExpectedSql = {
176
- mysql: mysql`ALTER TABLE \`TestDb\`.\`User\` ADD COLUMN \`score\` INT NOT NULL DEFAULT 0`,
177
- mssql: tsql`ALTER TABLE [TestDb].[TestSchema].[User] ADD [score] INT NOT NULL DEFAULT 0`,
178
- postgresql: pgsql`ALTER TABLE "TestSchema"."User" ADD COLUMN "score" INTEGER NOT NULL DEFAULT 0`,
179
- };
180
-
181
- export const addColumnWithAutoIncrement: ExpectedSql = {
182
- mysql: mysql`ALTER TABLE \`TestDb\`.\`User\` ADD COLUMN \`seq\` BIGINT NOT NULL AUTO_INCREMENT`,
183
- mssql: tsql`ALTER TABLE [TestDb].[TestSchema].[User] ADD [seq] BIGINT NOT NULL IDENTITY(1,1)`,
184
- postgresql: pgsql`ALTER TABLE "TestSchema"."User" ADD COLUMN "seq" BIGINT NOT NULL GENERATED BY DEFAULT AS IDENTITY`,
185
- };
186
-
187
- export const dropColumn: ExpectedSql = {
188
- mysql: mysql`ALTER TABLE \`TestDb\`.\`User\` DROP COLUMN \`email\``,
189
- mssql: tsql`ALTER TABLE [TestDb].[TestSchema].[User] DROP COLUMN [email]`,
190
- postgresql: pgsql`ALTER TABLE "TestSchema"."User" DROP COLUMN "email"`,
191
- };
192
-
193
- export const modifyColumn: ExpectedSql = {
194
- mysql: mysql`ALTER TABLE \`TestDb\`.\`User\` MODIFY COLUMN \`name\` VARCHAR(200) NULL`,
195
- mssql: tsql`ALTER TABLE [TestDb].[TestSchema].[User] ALTER COLUMN [name] NVARCHAR(200) NULL`,
196
- postgresql: pgsql`ALTER TABLE "TestSchema"."User" ALTER COLUMN "name" TYPE VARCHAR(200), ALTER COLUMN "name" DROP NOT NULL`,
197
- };
198
-
199
- export const modifyColumnTypeAndDefault: ExpectedSql = {
200
- mysql: mysql`ALTER TABLE \`TestDb\`.\`User\` MODIFY COLUMN \`score\` INT NOT NULL DEFAULT 100`,
201
- mssql: tsql`ALTER TABLE [TestDb].[TestSchema].[User] ALTER COLUMN [score] INT NOT NULL`,
202
- postgresql: pgsql`ALTER TABLE "TestSchema"."User" ALTER COLUMN "score" TYPE INTEGER, ALTER COLUMN "score" DROP NOT NULL, ALTER COLUMN "score" SET DEFAULT 100`,
203
- };
204
-
205
- export const renameColumn: ExpectedSql = {
206
- mysql: mysql`ALTER TABLE \`TestDb\`.\`User\` RENAME COLUMN \`name\` TO \`fullName\``,
207
- mssql: tsql`EXEC sp_rename '[TestDb].[TestSchema].[User].name', 'fullName', 'COLUMN'`,
208
- postgresql: pgsql`ALTER TABLE "TestSchema"."User" RENAME COLUMN "name" TO "fullName"`,
209
- };
210
-
211
- //#endregion
212
-
213
- //#region ========== Primary Key ==========
214
-
215
- export const dropPrimaryKey: ExpectedSql = {
216
- mysql: mysql`ALTER TABLE \`TestDb\`.\`User\` DROP PRIMARY KEY`,
217
- mssql: tsql`ALTER TABLE [TestDb].[TestSchema].[User] DROP CONSTRAINT [PK_User]`,
218
- postgresql: pgsql`ALTER TABLE "TestSchema"."User" DROP CONSTRAINT "PK_User"`,
219
- };
220
-
221
- export const addPrimaryKey: ExpectedSql = {
222
- mysql: mysql`ALTER TABLE \`TestDb\`.\`User\` ADD PRIMARY KEY (\`id\`)`,
223
- mssql: tsql`ALTER TABLE [TestDb].[TestSchema].[User] ADD CONSTRAINT [PK_User] PRIMARY KEY ([id])`,
224
- postgresql: pgsql`ALTER TABLE "TestSchema"."User" ADD CONSTRAINT "PK_User" PRIMARY KEY ("id")`,
225
- };
226
-
227
- export const addPrimaryKeyComposite: ExpectedSql = {
228
- mysql: mysql`ALTER TABLE \`TestDb\`.\`UserRole\` ADD PRIMARY KEY (\`userId\`, \`roleId\`)`,
229
- mssql: tsql`ALTER TABLE [TestDb].[TestSchema].[UserRole] ADD CONSTRAINT [PK_UserRole] PRIMARY KEY ([userId], [roleId])`,
230
- postgresql: pgsql`ALTER TABLE "TestSchema"."UserRole" ADD CONSTRAINT "PK_UserRole" PRIMARY KEY ("userId", "roleId")`,
231
- };
232
-
233
- //#endregion
234
-
235
- //#region ========== Foreign Key / Index ==========
236
-
237
- export const addForeignKey: ExpectedSql = {
238
- mysql: mysql`
239
- ALTER TABLE \`TestDb\`.\`Post\` ADD CONSTRAINT \`FK_Post_user\`
240
- FOREIGN KEY (\`userId\`) REFERENCES \`TestDb\`.\`User\` (\`id\`)
241
- `,
242
- mssql: tsql`
243
- ALTER TABLE [TestDb].[TestSchema].[Post] ADD CONSTRAINT [FK_Post_user]
244
- FOREIGN KEY ([userId]) REFERENCES [TestDb].[TestSchema].[User] ([id]);
245
- CREATE INDEX [IDX_Post_Post_user] ON [TestDb].[TestSchema].[Post] ([userId]);
246
- `,
247
- postgresql: pgsql`
248
- ALTER TABLE "TestSchema"."Post" ADD CONSTRAINT "FK_Post_user"
249
- FOREIGN KEY ("userId") REFERENCES "TestSchema"."User" ("id");
250
- CREATE INDEX "IDX_Post_Post_user" ON "TestSchema"."Post" ("userId");
251
- `,
252
- };
253
-
254
- export const dropForeignKey: ExpectedSql = {
255
- mysql: mysql`ALTER TABLE \`TestDb\`.\`Post\` DROP FOREIGN KEY \`FK_Post_user\``,
256
- mssql: tsql`ALTER TABLE [TestDb].[TestSchema].[Post] DROP CONSTRAINT [FK_Post_user]`,
257
- postgresql: pgsql`ALTER TABLE "TestSchema"."Post" DROP CONSTRAINT "FK_Post_user"`,
258
- };
259
-
260
- export const addIndex: ExpectedSql = {
261
- mysql: mysql`CREATE UNIQUE INDEX \`IDX_User_email\` ON \`TestDb\`.\`User\` (\`email\` ASC)`,
262
- mssql: tsql`CREATE UNIQUE INDEX [IDX_User_email] ON [TestDb].[TestSchema].[User] ([email] ASC)`,
263
- postgresql: pgsql`CREATE UNIQUE INDEX "IDX_User_email" ON "TestSchema"."User" ("email" ASC)`,
264
- };
265
-
266
- export const dropIndex: ExpectedSql = {
267
- mysql: mysql`DROP INDEX \`IDX_User_email\` ON \`TestDb\`.\`User\``,
268
- mssql: tsql`DROP INDEX [IDX_User_email] ON [TestDb].[TestSchema].[User]`,
269
- postgresql: pgsql`DROP INDEX "TestSchema"."IDX_User_email"`,
270
- };
271
-
272
- export const dropIndexComposite: ExpectedSql = {
273
- mysql: mysql`DROP INDEX \`IDX_User_name_email\` ON \`TestDb\`.\`User\``,
274
- mssql: tsql`DROP INDEX [IDX_User_name_email] ON [TestDb].[TestSchema].[User]`,
275
- postgresql: pgsql`DROP INDEX "TestSchema"."IDX_User_name_email"`,
276
- };
277
-
278
- //#endregion
279
-
280
- //#region ========== View ==========
281
-
282
- export const createView: ExpectedSql = {
283
- mysql: mysql`
284
- CREATE OR REPLACE VIEW \`TestDb\`.\`ActiveUsers\` AS
285
- SELECT * FROM \`TestDb\`.\`User\` AS \`T1\`
286
- WHERE \`T1\`.\`isActive\` <=> TRUE
287
- `,
288
- mssql: tsql`
289
- CREATE OR ALTER VIEW [TestDb].[TestSchema].[ActiveUsers] AS
290
- SELECT * FROM [TestDb].[TestSchema].[User] AS [T1]
291
- WHERE (([T1].[isActive] IS NULL AND 1 IS NULL) OR [T1].[isActive] = 1)
292
- `,
293
- postgresql: pgsql`
294
- CREATE OR REPLACE VIEW "TestSchema"."ActiveUsers" AS
295
- SELECT * FROM "TestSchema"."User" AS "T1"
296
- WHERE "T1"."isActive" IS NOT DISTINCT FROM TRUE
297
- `,
298
- };
299
-
300
- export const dropView: ExpectedSql = {
301
- mysql: mysql`DROP VIEW IF EXISTS \`TestDb\`.\`ActiveUsers\``,
302
- mssql: tsql`DROP VIEW IF EXISTS [TestDb].[TestSchema].[ActiveUsers]`,
303
- postgresql: pgsql`DROP VIEW IF EXISTS "TestSchema"."ActiveUsers"`,
304
- };
305
-
306
- //#endregion
307
-
308
- //#region ========== Procedure ==========
309
-
310
- export const createProc: ExpectedSql = {
311
- mysql: mysql`
312
- CREATE PROCEDURE \`TestDb\`.\`GetUserById\`(IN \`userId\` BIGINT)
313
- BEGIN
314
- -- DBMSwrite matching query --;
315
- END
316
- `,
317
- mssql: tsql`
318
- CREATE OR ALTER PROCEDURE [TestDb].[TestSchema].[GetUserById] @userId BIGINT
319
- AS
320
- BEGIN
321
- SET NOCOUNT ON;
322
- -- DBMSwrite matching query --
323
- END
324
- `,
325
- postgresql: pgsql`
326
- CREATE OR REPLACE FUNCTION "TestSchema"."GetUserById"("userId" BIGINT)
327
- RETURNS TABLE("id" BIGINT, "name" VARCHAR(100), "email" VARCHAR(200)) AS $$
328
- BEGIN
329
- -- DBMSwrite matching query --;
330
- END;
331
- $$ LANGUAGE plpgsql
332
- `,
333
- };
334
-
335
- export const dropProc: ExpectedSql = {
336
- mysql: mysql`DROP PROCEDURE IF EXISTS \`TestDb\`.\`GetUserById\``,
337
- mssql: tsql`DROP PROCEDURE IF EXISTS [TestDb].[TestSchema].[GetUserById]`,
338
- postgresql: pgsql`DROP FUNCTION IF EXISTS "TestSchema"."GetUserById"()`,
339
- };
340
-
341
- //#endregion