sonamu 0.5.0 → 0.5.2

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 (118) hide show
  1. package/dist/api/context.d.ts +4 -1
  2. package/dist/api/context.d.ts.map +1 -1
  3. package/dist/api/decorators.d.ts.map +1 -1
  4. package/dist/api/decorators.js +1 -1
  5. package/dist/api/decorators.js.map +1 -1
  6. package/dist/api/sonamu.d.ts +7 -6
  7. package/dist/api/sonamu.d.ts.map +1 -1
  8. package/dist/api/sonamu.js +1 -1
  9. package/dist/api/sonamu.js.map +1 -1
  10. package/dist/bin/build-config.d.ts +4 -0
  11. package/dist/bin/build-config.d.ts.map +1 -1
  12. package/dist/bin/build-config.js +1 -1
  13. package/dist/bin/build-config.js.map +1 -1
  14. package/dist/bin/cli-wrapper.js +1 -1
  15. package/dist/bin/cli-wrapper.js.map +1 -1
  16. package/dist/bin/cli.js +1 -1
  17. package/dist/bin/cli.js.map +1 -1
  18. package/dist/database/base-model.d.ts +8 -1
  19. package/dist/database/base-model.d.ts.map +1 -1
  20. package/dist/database/base-model.js +1 -1
  21. package/dist/database/base-model.js.map +1 -1
  22. package/dist/database/db.d.ts +1 -0
  23. package/dist/database/db.d.ts.map +1 -1
  24. package/dist/database/db.js +1 -1
  25. package/dist/database/db.js.map +1 -1
  26. package/dist/file-storage/driver.d.ts +3 -0
  27. package/dist/file-storage/driver.d.ts.map +1 -1
  28. package/dist/file-storage/driver.js +1 -1
  29. package/dist/file-storage/driver.js.map +1 -1
  30. package/dist/index.d.ts +1 -0
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +1 -1
  33. package/dist/index.js.map +1 -1
  34. package/dist/stream/index.d.ts +2 -0
  35. package/dist/stream/index.d.ts.map +1 -0
  36. package/dist/stream/index.js +2 -0
  37. package/dist/stream/index.js.map +1 -0
  38. package/dist/stream/sse.d.ts +13 -0
  39. package/dist/stream/sse.d.ts.map +1 -0
  40. package/dist/stream/sse.js +2 -0
  41. package/dist/stream/sse.js.map +1 -0
  42. package/dist/types/types.d.ts +5 -3
  43. package/dist/types/types.d.ts.map +1 -1
  44. package/dist/types/types.js.map +1 -1
  45. package/package.json +5 -3
  46. package/src/api/context.ts +10 -5
  47. package/src/api/decorators.ts +1 -3
  48. package/src/api/sonamu.ts +60 -26
  49. package/src/bin/build-config.ts +5 -0
  50. package/src/bin/cli-wrapper.ts +20 -6
  51. package/src/bin/cli.ts +16 -21
  52. package/src/database/base-model.ts +29 -3
  53. package/src/database/db.ts +3 -2
  54. package/src/file-storage/driver.ts +10 -0
  55. package/src/index.ts +1 -0
  56. package/src/stream/index.ts +1 -0
  57. package/src/stream/sse.ts +49 -0
  58. package/src/types/types.ts +10 -4
  59. package/tsconfig.json +4 -0
  60. package/dist/api/sonamu.types.d.ts +0 -30
  61. package/dist/api/sonamu.types.d.ts.map +0 -1
  62. package/dist/api/sonamu.types.js +0 -2
  63. package/dist/api/sonamu.types.js.map +0 -1
  64. package/dist/base-model-CEB0H0aO.d.mts +0 -43
  65. package/dist/base-model-CrqDMYhI.d.ts +0 -43
  66. package/dist/bin/cli-wrapper.d.mts +0 -1
  67. package/dist/bin/cli-wrapper.mjs +0 -43
  68. package/dist/bin/cli-wrapper.mjs.map +0 -1
  69. package/dist/bin/cli.d.mts +0 -2
  70. package/dist/bin/cli.mjs +0 -907
  71. package/dist/bin/cli.mjs.map +0 -1
  72. package/dist/chunk-2WAC2GER.js +0 -7625
  73. package/dist/chunk-2WAC2GER.js.map +0 -1
  74. package/dist/chunk-C3IPIF6O.mjs +0 -1581
  75. package/dist/chunk-C3IPIF6O.mjs.map +0 -1
  76. package/dist/chunk-EXHKSVTE.js +0 -280
  77. package/dist/chunk-EXHKSVTE.js.map +0 -1
  78. package/dist/chunk-FCERKIIF.mjs +0 -7623
  79. package/dist/chunk-FCERKIIF.mjs.map +0 -1
  80. package/dist/chunk-HGIBJYOU.mjs +0 -231
  81. package/dist/chunk-HGIBJYOU.mjs.map +0 -1
  82. package/dist/chunk-JKSOJRQA.mjs +0 -280
  83. package/dist/chunk-JKSOJRQA.mjs.map +0 -1
  84. package/dist/chunk-OTKKFP3Y.js +0 -1581
  85. package/dist/chunk-OTKKFP3Y.js.map +0 -1
  86. package/dist/chunk-PTFDTOJU.mjs +0 -19
  87. package/dist/chunk-PTFDTOJU.mjs.map +0 -1
  88. package/dist/chunk-UZ2IY5VE.js +0 -231
  89. package/dist/chunk-UZ2IY5VE.js.map +0 -1
  90. package/dist/database/drivers/knex/base-model.d.mts +0 -16
  91. package/dist/database/drivers/knex/base-model.d.ts +0 -16
  92. package/dist/database/drivers/knex/base-model.js +0 -55
  93. package/dist/database/drivers/knex/base-model.js.map +0 -1
  94. package/dist/database/drivers/knex/base-model.mjs +0 -56
  95. package/dist/database/drivers/knex/base-model.mjs.map +0 -1
  96. package/dist/database/drivers/kysely/base-model.d.mts +0 -22
  97. package/dist/database/drivers/kysely/base-model.d.ts +0 -22
  98. package/dist/database/drivers/kysely/base-model.js +0 -64
  99. package/dist/database/drivers/kysely/base-model.js.map +0 -1
  100. package/dist/database/drivers/kysely/base-model.mjs +0 -65
  101. package/dist/database/drivers/kysely/base-model.mjs.map +0 -1
  102. package/dist/database/types.d.ts +0 -39
  103. package/dist/database/types.d.ts.map +0 -1
  104. package/dist/database/types.js +0 -2
  105. package/dist/database/types.js.map +0 -1
  106. package/dist/index.d.mts +0 -813
  107. package/dist/index.mjs +0 -435
  108. package/dist/index.mjs.map +0 -1
  109. package/dist/model-aFgomcdc.d.mts +0 -1112
  110. package/dist/model-aFgomcdc.d.ts +0 -1112
  111. package/dist/smd/smd-manager.d.ts +0 -28
  112. package/dist/smd/smd-manager.d.ts.map +0 -1
  113. package/dist/smd/smd-manager.js +0 -2
  114. package/dist/smd/smd-manager.js.map +0 -1
  115. package/dist/smd/smd.d.ts +0 -40
  116. package/dist/smd/smd.d.ts.map +0 -1
  117. package/dist/smd/smd.js +0 -2
  118. package/dist/smd/smd.js.map +0 -1
package/dist/index.mjs DELETED
@@ -1,435 +0,0 @@
1
- import {
2
- FixtureManager,
3
- FixtureManagerClass,
4
- Migrator
5
- } from "./chunk-C3IPIF6O.mjs";
6
- import {
7
- UpsertBuilder,
8
- isRefField
9
- } from "./chunk-JKSOJRQA.mjs";
10
- import {
11
- AlreadyProcessedException,
12
- ApiParamType,
13
- BadRequestException,
14
- DB,
15
- DBKnexClass,
16
- DBKyselyClass,
17
- DuplicateRowException,
18
- Entity,
19
- EntityManager,
20
- GenerateOptions,
21
- InternalServerErrorException,
22
- NotFoundException,
23
- PathAndCode,
24
- RenderingNode,
25
- SQLDateTimeString,
26
- ServiceUnavailableException,
27
- SoException,
28
- Sonamu,
29
- SonamuQueryMode,
30
- Syncer,
31
- TargetNotFoundException,
32
- TemplateKey,
33
- TemplateOptions,
34
- UnauthorizedException,
35
- api,
36
- apiParamToTsCode,
37
- apiParamToTsCodeAsObject,
38
- apiParamTypeToTsType,
39
- asArray,
40
- findApiRootPath,
41
- findAppRootPath,
42
- getTextTypeLength,
43
- getZodObjectFromApi,
44
- getZodObjectFromApiParams,
45
- getZodTypeFromApiParamType,
46
- globAsync,
47
- hydrate,
48
- importMultiple,
49
- isBelongsToOneRelationProp,
50
- isBigIntegerProp,
51
- isBooleanProp,
52
- isCustomJoinClause,
53
- isDaemonServer,
54
- isDateProp,
55
- isDateTimeProp,
56
- isDecimalProp,
57
- isDevelopment,
58
- isDoubleProp,
59
- isEnumProp,
60
- isFloatProp,
61
- isHasManyRelationProp,
62
- isInDocker,
63
- isIntegerProp,
64
- isJsonProp,
65
- isKnexError,
66
- isKyselyError,
67
- isLocal,
68
- isManyToManyRelationProp,
69
- isOneToOneRelationProp,
70
- isProduction,
71
- isRelationProp,
72
- isRemote,
73
- isSoException,
74
- isStaging,
75
- isStringProp,
76
- isTest,
77
- isTextProp,
78
- isTimeProp,
79
- isTimestampProp,
80
- isUuidProp,
81
- isVirtualProp,
82
- nonNullable,
83
- objToMap,
84
- propNodeToZodTypeDef,
85
- propToZodTypeDef,
86
- registeredApis,
87
- serializeZodType,
88
- stream,
89
- unwrapPromiseOnce,
90
- zArrayable,
91
- zodTypeToTsTypeDef,
92
- zodTypeToZodCode
93
- } from "./chunk-FCERKIIF.mjs";
94
- import "./chunk-PTFDTOJU.mjs";
95
-
96
- // src/api/base-frame.ts
97
- var BaseFrameClass = class {
98
- getDB(which) {
99
- return DB.getDB(which);
100
- }
101
- getUpsertBuilder() {
102
- return new UpsertBuilder();
103
- }
104
- };
105
-
106
- // src/exceptions/error-handler.ts
107
- function setupErrorHandler(server) {
108
- server.setErrorHandler((error, request, reply) => {
109
- error.statusCode ??= 400;
110
- if (isSoException(error) && error.payload && Array.isArray(error.payload)) {
111
- const issues = error.payload;
112
- const [issue] = issues;
113
- const message = `${issue.message} (${issue.path.join("/")})`;
114
- request.log.error(`${error.statusCode} ${message}`);
115
- reply.status(error.statusCode <= 501 ? error.statusCode : 501).send({
116
- name: error.name,
117
- code: error.code,
118
- message,
119
- validationErrors: error.validation,
120
- issues
121
- });
122
- } else {
123
- request.log.error(`${error.statusCode} ${error.message}`);
124
- reply.status(error.statusCode <= 501 ? error.statusCode : 501).send({
125
- name: error.name,
126
- code: error.code,
127
- message: error.message,
128
- validationErrors: error.validation
129
- });
130
- }
131
- });
132
- }
133
-
134
- // src/entity/entity-utils.ts
135
- import inflection from "inflection";
136
- var p = {
137
- integer,
138
- bigInteger,
139
- text,
140
- string,
141
- float,
142
- double,
143
- decimal,
144
- boolean,
145
- date,
146
- dateTime,
147
- time,
148
- timestamp,
149
- json,
150
- uuid,
151
- enums,
152
- virtual,
153
- relationOneToOne,
154
- relationBelongsToOne,
155
- relationHasMany,
156
- relationManyToMany
157
- };
158
- function integer(name, option) {
159
- return {
160
- name,
161
- type: "integer",
162
- ...option
163
- };
164
- }
165
- function bigInteger(name, option) {
166
- return {
167
- name,
168
- type: "bigInteger",
169
- ...option
170
- };
171
- }
172
- function text(name, option) {
173
- return {
174
- name,
175
- type: "text",
176
- ...option
177
- };
178
- }
179
- function string(name, option) {
180
- return {
181
- name,
182
- type: "string",
183
- ...option
184
- };
185
- }
186
- function float(name, option) {
187
- return {
188
- name,
189
- type: "float",
190
- precision: 8,
191
- scale: 2,
192
- ...option
193
- };
194
- }
195
- function double(name, option) {
196
- return {
197
- name,
198
- type: "double",
199
- precision: 8,
200
- scale: 2,
201
- ...option
202
- };
203
- }
204
- function decimal(name, option) {
205
- return {
206
- name,
207
- type: "decimal",
208
- precision: 8,
209
- scale: 2,
210
- ...option
211
- };
212
- }
213
- function boolean(name, option) {
214
- return {
215
- name,
216
- type: "boolean",
217
- ...option
218
- };
219
- }
220
- function date(name, option) {
221
- if (option?.now === true) {
222
- delete option.now;
223
- option.dbDefault = "CURRENT_TIMESTAMP";
224
- }
225
- return {
226
- name,
227
- type: "date",
228
- ...option
229
- };
230
- }
231
- function dateTime(name, option) {
232
- if (option?.now === true) {
233
- delete option.now;
234
- option.dbDefault = "CURRENT_TIMESTAMP";
235
- }
236
- return {
237
- name,
238
- type: "datetime",
239
- ...option
240
- };
241
- }
242
- function time(name, option) {
243
- if (option?.now === true) {
244
- delete option.now;
245
- option.dbDefault = "CURRENT_TIMESTAMP";
246
- }
247
- return {
248
- name,
249
- type: "time",
250
- ...option
251
- };
252
- }
253
- function timestamp(name, option) {
254
- if (option?.now === true) {
255
- delete option.now;
256
- option.dbDefault = "CURRENT_TIMESTAMP";
257
- }
258
- return {
259
- name,
260
- type: "timestamp",
261
- ...option
262
- };
263
- }
264
- function json(name, option) {
265
- return {
266
- name,
267
- type: "json",
268
- ...option
269
- };
270
- }
271
- function uuid(name, option) {
272
- return {
273
- name,
274
- type: "uuid",
275
- ...option
276
- };
277
- }
278
- function enums(name, option) {
279
- return {
280
- name,
281
- type: "enum",
282
- id: option.id ?? `$Model${inflection.camelize(name)}`,
283
- ...option
284
- };
285
- }
286
- function virtual(name, option) {
287
- return {
288
- name,
289
- type: "virtual",
290
- ...option
291
- };
292
- }
293
- function relationOneToOne(name, option) {
294
- return {
295
- name,
296
- type: "relation",
297
- relationType: "OneToOne",
298
- ...option
299
- };
300
- }
301
- function relationBelongsToOne(name, option) {
302
- option.useConstraint = option.useConstraint ?? true;
303
- return {
304
- name,
305
- type: "relation",
306
- relationType: "BelongsToOne",
307
- ...option
308
- };
309
- }
310
- function relationHasMany(name, option) {
311
- return {
312
- name,
313
- type: "relation",
314
- relationType: "HasMany",
315
- ...option
316
- };
317
- }
318
- function relationManyToMany(name, option) {
319
- return {
320
- name,
321
- type: "relation",
322
- relationType: "ManyToMany",
323
- ...option
324
- };
325
- }
326
- var i = {
327
- index,
328
- unique
329
- };
330
- function index(columns) {
331
- return {
332
- type: "index",
333
- columns: asArray(columns)
334
- };
335
- }
336
- function unique(columns) {
337
- return {
338
- type: "unique",
339
- columns: asArray(columns)
340
- };
341
- }
342
- export {
343
- AlreadyProcessedException,
344
- ApiParamType,
345
- BadRequestException,
346
- BaseFrameClass,
347
- DB,
348
- DBKnexClass,
349
- DBKyselyClass,
350
- DuplicateRowException,
351
- Entity,
352
- EntityManager,
353
- FixtureManager,
354
- FixtureManagerClass,
355
- GenerateOptions,
356
- InternalServerErrorException,
357
- Migrator,
358
- NotFoundException,
359
- PathAndCode,
360
- RenderingNode,
361
- SQLDateTimeString,
362
- ServiceUnavailableException,
363
- SoException,
364
- Sonamu,
365
- SonamuQueryMode,
366
- Syncer,
367
- TargetNotFoundException,
368
- TemplateKey,
369
- TemplateOptions,
370
- UnauthorizedException,
371
- UpsertBuilder,
372
- api,
373
- apiParamToTsCode,
374
- apiParamToTsCodeAsObject,
375
- apiParamTypeToTsType,
376
- asArray,
377
- findApiRootPath,
378
- findAppRootPath,
379
- getTextTypeLength,
380
- getZodObjectFromApi,
381
- getZodObjectFromApiParams,
382
- getZodTypeFromApiParamType,
383
- globAsync,
384
- hydrate,
385
- i,
386
- importMultiple,
387
- isBelongsToOneRelationProp,
388
- isBigIntegerProp,
389
- isBooleanProp,
390
- isCustomJoinClause,
391
- isDaemonServer,
392
- isDateProp,
393
- isDateTimeProp,
394
- isDecimalProp,
395
- isDevelopment,
396
- isDoubleProp,
397
- isEnumProp,
398
- isFloatProp,
399
- isHasManyRelationProp,
400
- isInDocker,
401
- isIntegerProp,
402
- isJsonProp,
403
- isKnexError,
404
- isKyselyError,
405
- isLocal,
406
- isManyToManyRelationProp,
407
- isOneToOneRelationProp,
408
- isProduction,
409
- isRefField,
410
- isRelationProp,
411
- isRemote,
412
- isSoException,
413
- isStaging,
414
- isStringProp,
415
- isTest,
416
- isTextProp,
417
- isTimeProp,
418
- isTimestampProp,
419
- isUuidProp,
420
- isVirtualProp,
421
- nonNullable,
422
- objToMap,
423
- p,
424
- propNodeToZodTypeDef,
425
- propToZodTypeDef,
426
- registeredApis,
427
- serializeZodType,
428
- setupErrorHandler,
429
- stream,
430
- unwrapPromiseOnce,
431
- zArrayable,
432
- zodTypeToTsTypeDef,
433
- zodTypeToZodCode
434
- };
435
- //# sourceMappingURL=index.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/api/base-frame.ts","../src/exceptions/error-handler.ts","../src/entity/entity-utils.ts"],"sourcesContent":["import { Knex } from \"knex\";\nimport { DB } from \"../database/db\";\nimport { DBPreset } from \"../database/types\";\nimport { UpsertBuilder } from \"../database/upsert-builder\";\n\nexport abstract class BaseFrameClass {\n getDB(which: DBPreset): Knex {\n return DB.getDB(which) as Knex;\n }\n\n getUpsertBuilder() {\n return new UpsertBuilder<\"knex\">();\n }\n}\n","import { FastifyInstance } from \"fastify\";\nimport { ZodIssue } from \"zod\";\nimport { isSoException } from \"./so-exceptions\";\n\nexport function setupErrorHandler(server: FastifyInstance) {\n server.setErrorHandler((error, request, reply) => {\n error.statusCode ??= 400;\n\n if (isSoException(error) && error.payload && Array.isArray(error.payload)) {\n const issues = error.payload as ZodIssue[];\n const [issue] = issues;\n const message = `${issue.message} (${issue.path.join(\"/\")})`;\n\n request.log.error(`${error.statusCode} ${message}`);\n reply.status(error.statusCode <= 501 ? error.statusCode : 501).send({\n name: error.name,\n code: error.code,\n message: message,\n validationErrors: error.validation,\n issues,\n });\n } else {\n request.log.error(`${error.statusCode} ${error.message}`);\n reply.status(error.statusCode <= 501 ? error.statusCode : 501).send({\n name: error.name,\n code: error.code,\n message: error.message,\n validationErrors: error.validation,\n });\n }\n });\n}\n","import inflection from \"inflection\";\nimport {\n BelongsToOneRelationProp,\n BigIntegerProp,\n BooleanProp,\n DateProp,\n DateTimeProp,\n DecimalProp,\n DistributiveOmit,\n DoubleProp,\n EnumProp,\n FloatProp,\n HasManyRelationProp,\n IntegerProp,\n JsonProp,\n ManyToManyRelationProp,\n OneToOneRelationProp,\n EntityIndex,\n StringProp,\n TextProp,\n TimeProp,\n TimestampProp,\n UuidProp,\n VirtualProp,\n} from \"../types/types\";\nimport { asArray } from \"../utils/model\";\n\nexport const p = {\n integer,\n bigInteger,\n text,\n string,\n float,\n double,\n decimal,\n boolean,\n date,\n dateTime,\n time,\n timestamp,\n json,\n uuid,\n enums,\n virtual,\n relationOneToOne,\n relationBelongsToOne,\n relationHasMany,\n relationManyToMany,\n};\n\nfunction integer(\n name: string,\n option?: Omit<IntegerProp, \"name\" | \"type\">\n): IntegerProp {\n return {\n name,\n type: \"integer\",\n ...option,\n };\n}\nfunction bigInteger(\n name: string,\n option?: Omit<BigIntegerProp, \"name\" | \"type\">\n): BigIntegerProp {\n return {\n name,\n type: \"bigInteger\",\n ...option,\n };\n}\nfunction text(name: string, option: Omit<TextProp, \"name\" | \"type\">): TextProp {\n return {\n name,\n type: \"text\",\n ...option,\n };\n}\nfunction string(\n name: string,\n option: Omit<StringProp, \"name\" | \"type\">\n): StringProp {\n return {\n name,\n type: \"string\",\n ...option,\n };\n}\nfunction float(\n name: string,\n option?: Omit<FloatProp, \"name\" | \"type\">\n): FloatProp {\n return {\n name,\n type: \"float\",\n precision: 8,\n scale: 2,\n ...option,\n };\n}\nfunction double(\n name: string,\n option?: Omit<DoubleProp, \"name\" | \"type\">\n): DoubleProp {\n return {\n name,\n type: \"double\",\n precision: 8,\n scale: 2,\n ...option,\n };\n}\nfunction decimal(\n name: string,\n option?: Omit<DecimalProp, \"name\" | \"type\">\n): DecimalProp {\n return {\n name,\n type: \"decimal\",\n precision: 8,\n scale: 2,\n ...option,\n };\n}\nfunction boolean(\n name: string,\n option?: Omit<BooleanProp, \"name\" | \"type\">\n): BooleanProp {\n return {\n name,\n type: \"boolean\",\n ...option,\n };\n}\nfunction date(\n name: string,\n option?: Omit<DateProp, \"name\" | \"type\"> & { now?: true }\n): DateProp {\n if (option?.now === true) {\n delete option.now;\n option.dbDefault = \"CURRENT_TIMESTAMP\";\n }\n return {\n name,\n type: \"date\",\n ...option,\n };\n}\nfunction dateTime(\n name: string,\n option?: Omit<DateTimeProp, \"name\" | \"type\"> & { now?: true }\n): DateTimeProp {\n if (option?.now === true) {\n delete option.now;\n option.dbDefault = \"CURRENT_TIMESTAMP\";\n }\n return {\n name,\n type: \"datetime\",\n ...option,\n };\n}\nfunction time(\n name: string,\n option?: Omit<TimeProp, \"name\" | \"type\"> & { now?: true }\n): TimeProp {\n if (option?.now === true) {\n delete option.now;\n option.dbDefault = \"CURRENT_TIMESTAMP\";\n }\n return {\n name,\n type: \"time\",\n ...option,\n };\n}\nfunction timestamp(\n name: string,\n option?: Omit<TimestampProp, \"name\" | \"type\"> & { now?: true }\n): TimestampProp {\n if (option?.now === true) {\n delete option.now;\n option.dbDefault = \"CURRENT_TIMESTAMP\";\n }\n return {\n name,\n type: \"timestamp\",\n ...option,\n };\n}\nfunction json(name: string, option: Omit<JsonProp, \"name\" | \"type\">): JsonProp {\n return {\n name,\n type: \"json\",\n ...option,\n };\n}\nfunction uuid(name: string, option: Omit<UuidProp, \"name\" | \"type\">): UuidProp {\n return {\n name,\n type: \"uuid\",\n ...option,\n };\n}\nfunction enums(\n name: string,\n option: Omit<EnumProp, \"name\" | \"type\" | \"id\"> & { id?: string }\n): EnumProp {\n return {\n name,\n type: \"enum\",\n id: option.id ?? `$Model${inflection.camelize(name)}`,\n ...option,\n };\n}\nfunction virtual(\n name: string,\n option: Omit<VirtualProp, \"name\" | \"type\" | \"dbDefault\" | \"toFilter\">\n): VirtualProp {\n return {\n name,\n type: \"virtual\",\n ...option,\n };\n}\nfunction relationOneToOne(\n name: string,\n option: DistributiveOmit<\n OneToOneRelationProp,\n \"name\" | \"type\" | \"relationType\"\n >\n): OneToOneRelationProp {\n return {\n name,\n type: \"relation\",\n relationType: \"OneToOne\",\n ...option,\n };\n}\nfunction relationBelongsToOne(\n name: string,\n option: Omit<BelongsToOneRelationProp, \"name\" | \"type\" | \"relationType\">\n): BelongsToOneRelationProp {\n option.useConstraint = (option.useConstraint ?? true) as false;\n return {\n name,\n type: \"relation\",\n relationType: \"BelongsToOne\",\n ...option,\n };\n}\nfunction relationHasMany(\n name: string,\n option: Omit<HasManyRelationProp, \"name\" | \"type\" | \"relationType\">\n): HasManyRelationProp {\n return {\n name,\n type: \"relation\",\n relationType: \"HasMany\",\n ...option,\n };\n}\nfunction relationManyToMany(\n name: string,\n option: Omit<ManyToManyRelationProp, \"name\" | \"type\" | \"relationType\">\n): ManyToManyRelationProp {\n return {\n name,\n type: \"relation\",\n relationType: \"ManyToMany\",\n ...option,\n };\n}\n\nexport const i = {\n index,\n unique,\n};\n\nfunction index(columns: string | string[]): EntityIndex {\n return {\n type: \"index\",\n columns: asArray(columns),\n };\n}\n\nfunction unique(columns: string | string[]): EntityIndex {\n return {\n type: \"unique\",\n columns: asArray(columns),\n };\n}\n"],"mappings":"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","names":[]}