xansql 1.0.0
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/Types/fields/Array.d.ts +7 -0
- package/Types/fields/Array.js +6 -0
- package/Types/fields/Array.js.map +1 -0
- package/Types/fields/Array.mjs +6 -0
- package/Types/fields/Array.mjs.map +1 -0
- package/Types/fields/Boolean.d.ts +8 -0
- package/Types/fields/Boolean.js +11 -0
- package/Types/fields/Boolean.js.map +1 -0
- package/Types/fields/Boolean.mjs +11 -0
- package/Types/fields/Boolean.mjs.map +1 -0
- package/Types/fields/Date.d.ts +10 -0
- package/Types/fields/Date.js +22 -0
- package/Types/fields/Date.js.map +1 -0
- package/Types/fields/Date.mjs +22 -0
- package/Types/fields/Date.mjs.map +1 -0
- package/Types/fields/Enum.d.ts +8 -0
- package/Types/fields/Enum.js +10 -0
- package/Types/fields/Enum.js.map +1 -0
- package/Types/fields/Enum.mjs +10 -0
- package/Types/fields/Enum.mjs.map +1 -0
- package/Types/fields/File.d.ts +7 -0
- package/Types/fields/File.js +6 -0
- package/Types/fields/File.js.map +1 -0
- package/Types/fields/File.mjs +6 -0
- package/Types/fields/File.mjs.map +1 -0
- package/Types/fields/IDField.d.ts +6 -0
- package/Types/fields/IDField.js +2 -0
- package/Types/fields/IDField.js.map +1 -0
- package/Types/fields/IDField.mjs +2 -0
- package/Types/fields/IDField.mjs.map +1 -0
- package/Types/fields/Number.d.ts +8 -0
- package/Types/fields/Number.js +11 -0
- package/Types/fields/Number.js.map +1 -0
- package/Types/fields/Number.mjs +11 -0
- package/Types/fields/Number.mjs.map +1 -0
- package/Types/fields/Object.d.ts +8 -0
- package/Types/fields/Object.js +11 -0
- package/Types/fields/Object.js.map +1 -0
- package/Types/fields/Object.mjs +11 -0
- package/Types/fields/Object.mjs.map +1 -0
- package/Types/fields/Record.d.ts +8 -0
- package/Types/fields/Record.js +11 -0
- package/Types/fields/Record.js.map +1 -0
- package/Types/fields/Record.mjs +11 -0
- package/Types/fields/Record.mjs.map +1 -0
- package/Types/fields/Schema.d.ts +16 -0
- package/Types/fields/Schema.js +34 -0
- package/Types/fields/Schema.js.map +1 -0
- package/Types/fields/Schema.mjs +34 -0
- package/Types/fields/Schema.mjs.map +1 -0
- package/Types/fields/String.d.ts +10 -0
- package/Types/fields/String.js +20 -0
- package/Types/fields/String.js.map +1 -0
- package/Types/fields/String.mjs +20 -0
- package/Types/fields/String.mjs.map +1 -0
- package/Types/fields/Tuple.d.ts +8 -0
- package/Types/fields/Tuple.js +11 -0
- package/Types/fields/Tuple.js.map +1 -0
- package/Types/fields/Tuple.mjs +11 -0
- package/Types/fields/Tuple.mjs.map +1 -0
- package/Types/fields/Union.d.ts +8 -0
- package/Types/fields/Union.js +11 -0
- package/Types/fields/Union.js.map +1 -0
- package/Types/fields/Union.mjs +11 -0
- package/Types/fields/Union.mjs.map +1 -0
- package/Types/index.d.ts +56 -0
- package/Types/index.js +129 -0
- package/Types/index.js.map +1 -0
- package/Types/index.mjs +129 -0
- package/Types/index.mjs.map +1 -0
- package/Types/types.d.ts +20 -0
- package/core/ExcuteMeta.d.ts +11 -0
- package/core/ExcuteMeta.js +22 -0
- package/core/ExcuteMeta.js.map +1 -0
- package/core/ExcuteMeta.mjs +22 -0
- package/core/ExcuteMeta.mjs.map +1 -0
- package/core/Xansql.d.ts +46 -0
- package/core/Xansql.js +132 -0
- package/core/Xansql.js.map +1 -0
- package/core/Xansql.mjs +132 -0
- package/core/Xansql.mjs.map +1 -0
- package/core/XansqlError.js +11 -0
- package/core/XansqlError.js.map +1 -0
- package/core/XansqlError.mjs +11 -0
- package/core/XansqlError.mjs.map +1 -0
- package/core/XansqlResult.d.ts +12 -0
- package/core/XansqlResult.js +32 -0
- package/core/XansqlResult.js.map +1 -0
- package/core/XansqlResult.mjs +32 -0
- package/core/XansqlResult.mjs.map +1 -0
- package/core/classes/EventManager.d.ts +72 -0
- package/core/classes/EventManager.js +21 -0
- package/core/classes/EventManager.js.map +1 -0
- package/core/classes/EventManager.mjs +21 -0
- package/core/classes/EventManager.mjs.map +1 -0
- package/core/classes/ForeignInfo.js +51 -0
- package/core/classes/ForeignInfo.js.map +1 -0
- package/core/classes/ForeignInfo.mjs +51 -0
- package/core/classes/ForeignInfo.mjs.map +1 -0
- package/core/classes/Migration/ForeingMigration.d.ts +12 -0
- package/core/classes/Migration/ForeingMigration.js +52 -0
- package/core/classes/Migration/ForeingMigration.js.map +1 -0
- package/core/classes/Migration/ForeingMigration.mjs +52 -0
- package/core/classes/Migration/ForeingMigration.mjs.map +1 -0
- package/core/classes/Migration/IndexMigration.d.ts +12 -0
- package/core/classes/Migration/IndexMigration.js +49 -0
- package/core/classes/Migration/IndexMigration.js.map +1 -0
- package/core/classes/Migration/IndexMigration.mjs +49 -0
- package/core/classes/Migration/IndexMigration.mjs.map +1 -0
- package/core/classes/Migration/TableMigration.d.ts +33 -0
- package/core/classes/Migration/TableMigration.js +215 -0
- package/core/classes/Migration/TableMigration.js.map +1 -0
- package/core/classes/Migration/TableMigration.mjs +215 -0
- package/core/classes/Migration/TableMigration.mjs.map +1 -0
- package/core/classes/Migration/index.d.ts +12 -0
- package/core/classes/Migration/index.js +189 -0
- package/core/classes/Migration/index.js.map +1 -0
- package/core/classes/Migration/index.mjs +189 -0
- package/core/classes/Migration/index.mjs.map +1 -0
- package/core/classes/ModelFormatter.js +166 -0
- package/core/classes/ModelFormatter.js.map +1 -0
- package/core/classes/ModelFormatter.mjs +166 -0
- package/core/classes/ModelFormatter.mjs.map +1 -0
- package/core/classes/TypesGenerator.d.ts +13 -0
- package/core/classes/TypesGenerator.js +170 -0
- package/core/classes/TypesGenerator.js.map +1 -0
- package/core/classes/TypesGenerator.mjs +170 -0
- package/core/classes/TypesGenerator.mjs.map +1 -0
- package/core/classes/XansqlConfig.js +33 -0
- package/core/classes/XansqlConfig.js.map +1 -0
- package/core/classes/XansqlConfig.mjs +33 -0
- package/core/classes/XansqlConfig.mjs.map +1 -0
- package/core/classes/XansqlFetch.js +304 -0
- package/core/classes/XansqlFetch.js.map +1 -0
- package/core/classes/XansqlFetch.mjs +304 -0
- package/core/classes/XansqlFetch.mjs.map +1 -0
- package/core/classes/XansqlTransaction.d.ts +13 -0
- package/core/classes/XansqlTransaction.js +46 -0
- package/core/classes/XansqlTransaction.js.map +1 -0
- package/core/classes/XansqlTransaction.mjs +46 -0
- package/core/classes/XansqlTransaction.mjs.map +1 -0
- package/core/type.d.ts +117 -0
- package/index.d.ts +3 -0
- package/index.js +1 -0
- package/index.js.map +1 -0
- package/index.mjs +1 -0
- package/index.mjs.map +1 -0
- package/model/Args/RelationExcuteArgs.js +5 -0
- package/model/Args/RelationExcuteArgs.js.map +1 -0
- package/model/Args/RelationExcuteArgs.mjs +5 -0
- package/model/Args/RelationExcuteArgs.mjs.map +1 -0
- package/model/Args/WhereArgs.js +226 -0
- package/model/Args/WhereArgs.js.map +1 -0
- package/model/Args/WhereArgs.mjs +226 -0
- package/model/Args/WhereArgs.mjs.map +1 -0
- package/model/Base.d.ts +26 -0
- package/model/Base.js +64 -0
- package/model/Base.js.map +1 -0
- package/model/Base.mjs +64 -0
- package/model/Base.mjs.map +1 -0
- package/model/Executer/Aggregate/SelectArgs.js +59 -0
- package/model/Executer/Aggregate/SelectArgs.js.map +1 -0
- package/model/Executer/Aggregate/SelectArgs.mjs +59 -0
- package/model/Executer/Aggregate/SelectArgs.mjs.map +1 -0
- package/model/Executer/Aggregate/index.js +59 -0
- package/model/Executer/Aggregate/index.js.map +1 -0
- package/model/Executer/Aggregate/index.mjs +59 -0
- package/model/Executer/Aggregate/index.mjs.map +1 -0
- package/model/Executer/Create/CreateDataArgs.js +145 -0
- package/model/Executer/Create/CreateDataArgs.js.map +1 -0
- package/model/Executer/Create/CreateDataArgs.mjs +145 -0
- package/model/Executer/Create/CreateDataArgs.mjs.map +1 -0
- package/model/Executer/Create/index.js +101 -0
- package/model/Executer/Create/index.js.map +1 -0
- package/model/Executer/Create/index.mjs +101 -0
- package/model/Executer/Create/index.mjs.map +1 -0
- package/model/Executer/Delete/index.js +112 -0
- package/model/Executer/Delete/index.js.map +1 -0
- package/model/Executer/Delete/index.mjs +112 -0
- package/model/Executer/Delete/index.mjs.map +1 -0
- package/model/Executer/Find/DistinctArgs.js +32 -0
- package/model/Executer/Find/DistinctArgs.js.map +1 -0
- package/model/Executer/Find/DistinctArgs.mjs +32 -0
- package/model/Executer/Find/DistinctArgs.mjs.map +1 -0
- package/model/Executer/Find/LimitArgs.js +31 -0
- package/model/Executer/Find/LimitArgs.js.map +1 -0
- package/model/Executer/Find/LimitArgs.mjs +31 -0
- package/model/Executer/Find/LimitArgs.mjs.map +1 -0
- package/model/Executer/Find/OrderByArgs.js +29 -0
- package/model/Executer/Find/OrderByArgs.js.map +1 -0
- package/model/Executer/Find/OrderByArgs.mjs +29 -0
- package/model/Executer/Find/OrderByArgs.mjs.map +1 -0
- package/model/Executer/Find/SelectArgs.js +119 -0
- package/model/Executer/Find/SelectArgs.js.map +1 -0
- package/model/Executer/Find/SelectArgs.mjs +119 -0
- package/model/Executer/Find/SelectArgs.mjs.map +1 -0
- package/model/Executer/Find/index.js +338 -0
- package/model/Executer/Find/index.js.map +1 -0
- package/model/Executer/Find/index.mjs +338 -0
- package/model/Executer/Find/index.mjs.map +1 -0
- package/model/Executer/Update/UpdateDataArgs.js +124 -0
- package/model/Executer/Update/UpdateDataArgs.js.map +1 -0
- package/model/Executer/Update/UpdateDataArgs.mjs +124 -0
- package/model/Executer/Update/UpdateDataArgs.mjs.map +1 -0
- package/model/Executer/Update/index.js +207 -0
- package/model/Executer/Update/index.js.map +1 -0
- package/model/Executer/Update/index.mjs +207 -0
- package/model/Executer/Update/index.mjs.map +1 -0
- package/model/include/ValueFormatter.js +99 -0
- package/model/include/ValueFormatter.js.map +1 -0
- package/model/include/ValueFormatter.mjs +99 -0
- package/model/include/ValueFormatter.mjs.map +1 -0
- package/model/index.d.ts +29 -0
- package/model/index.js +236 -0
- package/model/index.js.map +1 -0
- package/model/index.mjs +236 -0
- package/model/index.mjs.map +1 -0
- package/model/type.d.ts +106 -0
- package/package.json +32 -0
- package/readme.md +359 -0
- package/utils/chunker.js +53 -0
- package/utils/chunker.js.map +1 -0
- package/utils/chunker.mjs +53 -0
- package/utils/chunker.mjs.map +1 -0
- package/utils/index.js +49 -0
- package/utils/index.js.map +1 -0
- package/utils/index.mjs +49 -0
- package/utils/index.mjs.map +1 -0
- package/utils/sha256.js +66 -0
- package/utils/sha256.js.map +1 -0
- package/utils/sha256.mjs +66 -0
- package/utils/sha256.mjs.map +1 -0
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var Array$1=require('../../Types/fields/Array.js'),Boolean=require('../../Types/fields/Boolean.js'),Date=require('../../Types/fields/Date.js'),Enum=require('../../Types/fields/Enum.js'),File=require('../../Types/fields/File.js'),IDField=require('../../Types/fields/IDField.js'),Number=require('../../Types/fields/Number.js'),Object$1=require('../../Types/fields/Object.js'),Record=require('../../Types/fields/Record.js'),String=require('../../Types/fields/String.js'),Tuple=require('../../Types/fields/Tuple.js'),Union=require('../../Types/fields/Union.js'),ForeignInfo=require('./ForeignInfo.js');const ucf = (s) => s.split('_').map(w => w.charAt(0).toUpperCase() + w.slice(1)).join('');
|
|
2
|
+
class TypesGenerator {
|
|
3
|
+
constructor(xansql) {
|
|
4
|
+
this.xansql = xansql;
|
|
5
|
+
}
|
|
6
|
+
async generate(model) {
|
|
7
|
+
const xansql = this.xansql;
|
|
8
|
+
const models = model ? [model] : Array.from(xansql.models.values());
|
|
9
|
+
let ts = ``;
|
|
10
|
+
ts += `export type WhereInputSubConditions<T> = {\n`;
|
|
11
|
+
ts += ` equals?: T;\n`;
|
|
12
|
+
ts += ` not?: T;\n`;
|
|
13
|
+
ts += ` lt?: T;\n`;
|
|
14
|
+
ts += ` lte?: T;\n`;
|
|
15
|
+
ts += ` gt?: T;\n`;
|
|
16
|
+
ts += ` gte?: T;\n`;
|
|
17
|
+
ts += ` in?: T[];\n`;
|
|
18
|
+
ts += ` notIn?: T[];\n`;
|
|
19
|
+
ts += ` between?: [T, T];\n`;
|
|
20
|
+
ts += ` notBetween?: [T, T];\n`;
|
|
21
|
+
ts += ` contains?: T;\n`;
|
|
22
|
+
ts += ` notContains?: T;\n`;
|
|
23
|
+
ts += ` startsWith?: T;\n`;
|
|
24
|
+
ts += ` endsWith?: T;\n`;
|
|
25
|
+
ts += ` isNull?: boolean;\n`;
|
|
26
|
+
ts += ` isNotNull?: boolean;\n`;
|
|
27
|
+
ts += ` isEmpty?: boolean;\n`;
|
|
28
|
+
ts += ` isNotEmpty?: boolean;\n`;
|
|
29
|
+
ts += ` isTrue?: boolean;\n`;
|
|
30
|
+
ts += ` isFalse?: boolean;\n`;
|
|
31
|
+
ts += `}\n`;
|
|
32
|
+
ts += `export type WhereArgsColumn<T> = T | T[] | WhereInputSubConditions<T> | WhereInputSubConditions<T>[];\n\n`;
|
|
33
|
+
ts += `export type SchemaColumnExtends = Record<string, { Columns: any; SchemaColumns: Record<string, any>; SchemaArrayColumns: Record<string, any> }>\n\n`;
|
|
34
|
+
ts += `export type WhereArgs<Columns, SchemaColumns extends SchemaColumnExtends, SchemaArrayColumns extends SchemaColumnExtends> = \n`;
|
|
35
|
+
ts += ` & {[K in keyof Columns]?: WhereArgsColumn<Columns[K]> | WhereArgs<Columns, SchemaColumns, SchemaArrayColumns>[]}\n`;
|
|
36
|
+
ts += ` & { [SK in keyof SchemaColumns]?: number | WhereArgsColumn<number> | WhereArgs<SchemaColumns[SK]['Columns'], SchemaColumns[SK]['SchemaColumns'], SchemaColumns[SK]['SchemaArrayColumns']> | WhereArgs<SchemaColumns[SK]['Columns'], SchemaColumns[SK]['SchemaColumns'], SchemaColumns[SK]['SchemaArrayColumns']>[] }\n`;
|
|
37
|
+
ts += ` & { [SA in keyof SchemaArrayColumns]?: WhereArgs<SchemaArrayColumns[SA]['Columns'], SchemaArrayColumns[SA]['SchemaColumns'], SchemaArrayColumns[SA]['SchemaArrayColumns']> | WhereArgs<SchemaArrayColumns[SA]['Columns'], SchemaArrayColumns[SA]['SchemaColumns'], SchemaArrayColumns[SA]['SchemaArrayColumns']>[] }\n\n\n`;
|
|
38
|
+
// limit args
|
|
39
|
+
ts += `export type LimitArgs = "all" | { take?: number; skip?: number; };\n\n`;
|
|
40
|
+
// order by args
|
|
41
|
+
ts += `export type OrderByArgs<Columns> = { [K in keyof Columns]?: "asc" | "desc" };\n\n`;
|
|
42
|
+
// Aggregate args
|
|
43
|
+
ts += `export type AggregateFunctions = "count" | "sum" | "avg" | "min" | "max";\n`;
|
|
44
|
+
ts += `export type AggregateSelectArgsColumnType = {\n`;
|
|
45
|
+
ts += ` [func in AggregateFunctions]?: boolean | {\n`;
|
|
46
|
+
ts += ` alias?: string;\n`;
|
|
47
|
+
ts += ` orderBy?: "asc" | "desc";\n`;
|
|
48
|
+
ts += ` round?: number;\n`;
|
|
49
|
+
ts += ` distinct?: boolean;\n`;
|
|
50
|
+
ts += ` };\n`;
|
|
51
|
+
ts += `}\n\n`;
|
|
52
|
+
ts += `export type FindArgsAggregate<SchemaArrayColumns extends SchemaColumnExtends> = {\n`;
|
|
53
|
+
ts += ` {[K in keyof SchemaArrayColumns]?: {\n`;
|
|
54
|
+
ts += ` [func in AggregateFunctions]?: boolean | {\n`;
|
|
55
|
+
ts += ` columns?: (keyof SchemaArrayColumns[K]['Columns'] & keyof SchemaArrayColumns[K]['SchemaColumns'])[];\n`;
|
|
56
|
+
ts += ` alias?: string;\n`;
|
|
57
|
+
ts += ` orderBy?: "asc" | "desc";\n`;
|
|
58
|
+
ts += ` round?: number;\n`;
|
|
59
|
+
ts += ` distinct?: boolean;\n`;
|
|
60
|
+
ts += ` };\n`;
|
|
61
|
+
ts += ` }}\n`;
|
|
62
|
+
ts += `}\n\n`;
|
|
63
|
+
ts += `export type SelectArgs<Columns, SchemaColumns extends SchemaColumnExtends, SchemaArrayColumns extends SchemaColumnExtends> = \n`;
|
|
64
|
+
ts += ` & {[K in keyof Columns]?: boolean}\n`;
|
|
65
|
+
ts += ` & { [SK in keyof SchemaColumns]?: boolean | FindArgs<SchemaColumns[SK]['Columns'], SchemaColumns[SK]['SchemaColumns'], SchemaColumns[SK]['SchemaArrayColumns']>}\n`;
|
|
66
|
+
ts += ` & { [SA in keyof SchemaArrayColumns]?: boolean | FindArgs<SchemaArrayColumns[SA]['Columns'], SchemaArrayColumns[SA]['SchemaColumns'], SchemaArrayColumns[SA]['SchemaArrayColumns']>}\n\n`;
|
|
67
|
+
ts += `type FindArgs<Columns, SchemaColumns extends SchemaColumnExtends, SchemaArrayColumns extends SchemaColumnExtends> = {\n`;
|
|
68
|
+
ts += ` distinct?: (keyof Columns & keyof SchemaColumns)[];\n`;
|
|
69
|
+
ts += ` where?: WhereArgs<Columns, SchemaColumns, SchemaArrayColumns>;\n`;
|
|
70
|
+
ts += ` select?: SelectArgs<Columns, SchemaColumns, SchemaArrayColumns>;\n`;
|
|
71
|
+
ts += ` orderBy?: OrderByArgs<Columns>;\n`;
|
|
72
|
+
ts += ` limit?: LimitArgs\n`;
|
|
73
|
+
ts += ` aggregate?: {\n`;
|
|
74
|
+
ts += ` [func in "count" | "sum" | "avg" | "min" | "max"]?: boolean | {\n`;
|
|
75
|
+
ts += ` columns?: (keyof Columns & keyof SchemaColumns)[];\n`;
|
|
76
|
+
ts += ` alias?: string;\n`;
|
|
77
|
+
ts += ` orderBy?: "asc" | "desc";\n`;
|
|
78
|
+
ts += ` round?: number;\n`;
|
|
79
|
+
ts += ` distinct?: boolean;\n`;
|
|
80
|
+
ts += ` };\n`;
|
|
81
|
+
ts += ` };\n`;
|
|
82
|
+
ts += `}\n\n`;
|
|
83
|
+
for (let model of models) {
|
|
84
|
+
ts += `//========== ${model.table} Table types=============\n\n`.toUpperCase();
|
|
85
|
+
`export type ${ucf(model.table)}WhereInput {\n`;
|
|
86
|
+
let columns = `export type ${ucf(model.table)}Columns = {\n`;
|
|
87
|
+
let columnsSchema = `export type ${ucf(model.table)}SchemaColumns = {\n`;
|
|
88
|
+
let columnsSchemaArray = `export type ${ucf(model.table)}SchemaArrayColumns = {\n`;
|
|
89
|
+
for (let column in model.schema) {
|
|
90
|
+
const field = model.schema[column];
|
|
91
|
+
const meta = field.meta || {};
|
|
92
|
+
if (ForeignInfo.default.is(field)) {
|
|
93
|
+
const foreign = ForeignInfo.default.get(model, column);
|
|
94
|
+
const FModel = model.xansql.getModel(foreign.table);
|
|
95
|
+
const name = ucf(FModel.table);
|
|
96
|
+
if (ForeignInfo.default.isArray(field)) {
|
|
97
|
+
columnsSchemaArray += ` ${column}: {\n`;
|
|
98
|
+
columnsSchemaArray += ` Columns: ${name}Columns;\n`;
|
|
99
|
+
columnsSchemaArray += ` SchemaColumns: ${name}SchemaColumns;\n`;
|
|
100
|
+
columnsSchemaArray += ` SchemaArrayColumns: ${name}SchemaArrayColumns\n`;
|
|
101
|
+
columnsSchemaArray += ` }\n`;
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
columnsSchema += ` ${column}: {\n`;
|
|
105
|
+
columnsSchema += ` Columns: ${name}Columns;\n`;
|
|
106
|
+
columnsSchema += ` SchemaColumns: ${name}SchemaColumns;\n`;
|
|
107
|
+
columnsSchema += ` SchemaArrayColumns: ${name}SchemaArrayColumns\n`;
|
|
108
|
+
columnsSchema += ` }\n`;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
let columnType = this.getType(field);
|
|
113
|
+
columns += ` ${column}${meta.optional || meta.nullable ? "?" : ""}: ${columnType}${meta.nullable ? " | null" : ""};\n`;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
columns += `}\n\n`;
|
|
117
|
+
columnsSchema += `}\n\n`;
|
|
118
|
+
columnsSchemaArray += `}\n\n`;
|
|
119
|
+
// ts += WhereInput;
|
|
120
|
+
ts += columns;
|
|
121
|
+
ts += columnsSchema;
|
|
122
|
+
ts += columnsSchemaArray;
|
|
123
|
+
}
|
|
124
|
+
return ts;
|
|
125
|
+
}
|
|
126
|
+
iof(field, ...instances) {
|
|
127
|
+
return instances.some(instance => field instanceof instance);
|
|
128
|
+
}
|
|
129
|
+
getType(field) {
|
|
130
|
+
var _a;
|
|
131
|
+
if (this.iof(field, Array$1.default) && !ForeignInfo.default.is(field)) {
|
|
132
|
+
return "any[]";
|
|
133
|
+
}
|
|
134
|
+
else if (this.iof(field, Boolean.default)) {
|
|
135
|
+
return "boolean";
|
|
136
|
+
}
|
|
137
|
+
else if (this.iof(field, IDField.default, Number.default)) {
|
|
138
|
+
return "number";
|
|
139
|
+
}
|
|
140
|
+
else if (this.iof(field, String.default)) {
|
|
141
|
+
return "string";
|
|
142
|
+
}
|
|
143
|
+
else if (this.iof(field, Date.default)) {
|
|
144
|
+
return "Date";
|
|
145
|
+
}
|
|
146
|
+
else if (this.iof(field, Enum.default)) {
|
|
147
|
+
const enumValues = ((_a = field.meta) === null || _a === void 0 ? void 0 : _a.values) || [];
|
|
148
|
+
return enumValues.map((v) => typeof v === "string" ? `"${v}"` : v).join(" | ");
|
|
149
|
+
}
|
|
150
|
+
else if (this.iof(field, File.default)) {
|
|
151
|
+
return "File | string";
|
|
152
|
+
}
|
|
153
|
+
else if (this.iof(field, Object$1.default)) {
|
|
154
|
+
return "Record<string, any>";
|
|
155
|
+
}
|
|
156
|
+
else if (this.iof(field, Record.default)) {
|
|
157
|
+
const keyType = this.getType(field.keyType);
|
|
158
|
+
const valueType = this.getType(field.valueType);
|
|
159
|
+
return `Record<${keyType}, ${valueType}>`;
|
|
160
|
+
}
|
|
161
|
+
else if (this.iof(field, Tuple.default)) {
|
|
162
|
+
const types = field.types.map((t) => this.getType(t));
|
|
163
|
+
return `[${types.join(", ")}]`;
|
|
164
|
+
}
|
|
165
|
+
else if (this.iof(field, Union.default)) {
|
|
166
|
+
const types = field.types.map((t) => this.getType(t));
|
|
167
|
+
return types.join(" | ");
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}exports.default=TypesGenerator;//# sourceMappingURL=TypesGenerator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TypesGenerator.js","sources":["../../../src/core/classes/TypesGenerator.ts"],"sourcesContent":["import Model from \"../../model\";\nimport ValueFormatter from \"../../model/include/ValueFormatter\";\nimport XqlArray from \"../../Types/fields/Array\";\nimport XqlBoolean from \"../../Types/fields/Boolean\";\nimport XqlDate from \"../../Types/fields/Date\";\nimport XqlEnum from \"../../Types/fields/Enum\";\nimport XqlFile from \"../../Types/fields/File\";\nimport XqlIDField from \"../../Types/fields/IDField\";\nimport XqlNumber from \"../../Types/fields/Number\";\nimport XqlObject from \"../../Types/fields/Object\";\nimport XqlRecord from \"../../Types/fields/Record\";\nimport XqlSchema from \"../../Types/fields/Schema\";\nimport XqlString from \"../../Types/fields/String\";\nimport XqlTuple from \"../../Types/fields/Tuple\";\nimport XqlUnion from \"../../Types/fields/Union\";\nimport { XqlFields } from \"../../Types/types\";\nimport Xansql from \"../Xansql\";\nimport Foreign from \"./ForeignInfo\";\n\n\nconst ucf = (s: string) => s.split('_').map(w => w.charAt(0).toUpperCase() + w.slice(1)).join('');\n\nclass TypesGenerator {\n xansql: Xansql;\n\n constructor(xansql: Xansql) {\n this.xansql = xansql;\n }\n\n async generate(model?: Model) {\n const xansql = this.xansql;\n const models = model ? [model] : Array.from(xansql.models.values());\n\n let ts = ``;\n ts += `export type WhereInputSubConditions<T> = {\\n`;\n ts += ` equals?: T;\\n`;\n ts += ` not?: T;\\n`;\n ts += ` lt?: T;\\n`;\n ts += ` lte?: T;\\n`;\n ts += ` gt?: T;\\n`;\n ts += ` gte?: T;\\n`;\n ts += ` in?: T[];\\n`;\n ts += ` notIn?: T[];\\n`;\n ts += ` between?: [T, T];\\n`;\n ts += ` notBetween?: [T, T];\\n`;\n ts += ` contains?: T;\\n`;\n ts += ` notContains?: T;\\n`;\n ts += ` startsWith?: T;\\n`;\n ts += ` endsWith?: T;\\n`;\n ts += ` isNull?: boolean;\\n`;\n ts += ` isNotNull?: boolean;\\n`;\n ts += ` isEmpty?: boolean;\\n`;\n ts += ` isNotEmpty?: boolean;\\n`;\n ts += ` isTrue?: boolean;\\n`;\n ts += ` isFalse?: boolean;\\n`;\n ts += `}\\n`;\n\n ts += `export type WhereArgsColumn<T> = T | T[] | WhereInputSubConditions<T> | WhereInputSubConditions<T>[];\\n\\n`;\n\n ts += `export type SchemaColumnExtends = Record<string, { Columns: any; SchemaColumns: Record<string, any>; SchemaArrayColumns: Record<string, any> }>\\n\\n`\n ts += `export type WhereArgs<Columns, SchemaColumns extends SchemaColumnExtends, SchemaArrayColumns extends SchemaColumnExtends> = \\n`;\n ts += ` & {[K in keyof Columns]?: WhereArgsColumn<Columns[K]> | WhereArgs<Columns, SchemaColumns, SchemaArrayColumns>[]}\\n`;\n ts += ` & { [SK in keyof SchemaColumns]?: number | WhereArgsColumn<number> | WhereArgs<SchemaColumns[SK]['Columns'], SchemaColumns[SK]['SchemaColumns'], SchemaColumns[SK]['SchemaArrayColumns']> | WhereArgs<SchemaColumns[SK]['Columns'], SchemaColumns[SK]['SchemaColumns'], SchemaColumns[SK]['SchemaArrayColumns']>[] }\\n`\n ts += ` & { [SA in keyof SchemaArrayColumns]?: WhereArgs<SchemaArrayColumns[SA]['Columns'], SchemaArrayColumns[SA]['SchemaColumns'], SchemaArrayColumns[SA]['SchemaArrayColumns']> | WhereArgs<SchemaArrayColumns[SA]['Columns'], SchemaArrayColumns[SA]['SchemaColumns'], SchemaArrayColumns[SA]['SchemaArrayColumns']>[] }\\n\\n\\n`\n\n\n // limit args\n ts += `export type LimitArgs = \"all\" | { take?: number; skip?: number; };\\n\\n`;\n\n // order by args\n ts += `export type OrderByArgs<Columns> = { [K in keyof Columns]?: \"asc\" | \"desc\" };\\n\\n`;\n\n // Aggregate args\n\n ts += `export type AggregateFunctions = \"count\" | \"sum\" | \"avg\" | \"min\" | \"max\";\\n`;\n ts += `export type AggregateSelectArgsColumnType = {\\n`;\n ts += ` [func in AggregateFunctions]?: boolean | {\\n`;\n ts += ` alias?: string;\\n`;\n ts += ` orderBy?: \"asc\" | \"desc\";\\n`;\n ts += ` round?: number;\\n`;\n ts += ` distinct?: boolean;\\n`;\n ts += ` };\\n`;\n ts += `}\\n\\n`;\n\n ts += `export type FindArgsAggregate<SchemaArrayColumns extends SchemaColumnExtends> = {\\n`;\n ts += ` {[K in keyof SchemaArrayColumns]?: {\\n`;\n ts += ` [func in AggregateFunctions]?: boolean | {\\n`;\n ts += ` columns?: (keyof SchemaArrayColumns[K]['Columns'] & keyof SchemaArrayColumns[K]['SchemaColumns'])[];\\n`;\n ts += ` alias?: string;\\n`;\n ts += ` orderBy?: \"asc\" | \"desc\";\\n`;\n ts += ` round?: number;\\n`;\n ts += ` distinct?: boolean;\\n`;\n ts += ` };\\n`;\n ts += ` }}\\n`;\n ts += `}\\n\\n`;\n\n\n ts += `export type SelectArgs<Columns, SchemaColumns extends SchemaColumnExtends, SchemaArrayColumns extends SchemaColumnExtends> = \\n`;\n ts += ` & {[K in keyof Columns]?: boolean}\\n`;\n ts += ` & { [SK in keyof SchemaColumns]?: boolean | FindArgs<SchemaColumns[SK]['Columns'], SchemaColumns[SK]['SchemaColumns'], SchemaColumns[SK]['SchemaArrayColumns']>}\\n`;\n ts += ` & { [SA in keyof SchemaArrayColumns]?: boolean | FindArgs<SchemaArrayColumns[SA]['Columns'], SchemaArrayColumns[SA]['SchemaColumns'], SchemaArrayColumns[SA]['SchemaArrayColumns']>}\\n\\n`;\n\n ts += `type FindArgs<Columns, SchemaColumns extends SchemaColumnExtends, SchemaArrayColumns extends SchemaColumnExtends> = {\\n`;\n ts += ` distinct?: (keyof Columns & keyof SchemaColumns)[];\\n`;\n ts += ` where?: WhereArgs<Columns, SchemaColumns, SchemaArrayColumns>;\\n`;\n ts += ` select?: SelectArgs<Columns, SchemaColumns, SchemaArrayColumns>;\\n`;\n ts += ` orderBy?: OrderByArgs<Columns>;\\n`;\n ts += ` limit?: LimitArgs\\n`;\n ts += ` aggregate?: {\\n`;\n ts += ` [func in \"count\" | \"sum\" | \"avg\" | \"min\" | \"max\"]?: boolean | {\\n`;\n ts += ` columns?: (keyof Columns & keyof SchemaColumns)[];\\n`;\n ts += ` alias?: string;\\n`;\n ts += ` orderBy?: \"asc\" | \"desc\";\\n`;\n ts += ` round?: number;\\n`;\n ts += ` distinct?: boolean;\\n`;\n ts += ` };\\n`;\n ts += ` };\\n`;\n ts += `}\\n\\n`;\n\n\n\n\n for (let model of models) {\n ts += `//========== ${model.table} Table types=============\\n\\n`.toUpperCase();\n let WhereInput = `export type ${ucf(model.table)}WhereInput {\\n`;\n\n let columns = `export type ${ucf(model.table)}Columns = {\\n`;\n let columnsSchema = `export type ${ucf(model.table)}SchemaColumns = {\\n`\n let columnsSchemaArray = `export type ${ucf(model.table)}SchemaArrayColumns = {\\n`\n\n\n for (let column in model.schema) {\n const field = model.schema[column];\n const meta = field.meta || {};\n if (Foreign.is(field)) {\n const foreign = Foreign.get(model, column);\n const FModel = model.xansql.getModel(foreign.table);\n const name = ucf(FModel.table)\n if (Foreign.isArray(field)) {\n columnsSchemaArray += ` ${column}: {\\n`\n columnsSchemaArray += ` Columns: ${name}Columns;\\n`\n columnsSchemaArray += ` SchemaColumns: ${name}SchemaColumns;\\n`\n columnsSchemaArray += ` SchemaArrayColumns: ${name}SchemaArrayColumns\\n`\n columnsSchemaArray += ` }\\n`\n WhereInput += ` ${column}?: ${name}WhereInput | ${name}WhereInput[];\\n`;\n } else {\n columnsSchema += ` ${column}: {\\n`\n columnsSchema += ` Columns: ${name}Columns;\\n`\n columnsSchema += ` SchemaColumns: ${name}SchemaColumns;\\n`\n columnsSchema += ` SchemaArrayColumns: ${name}SchemaArrayColumns\\n`\n columnsSchema += ` }\\n`\n WhereInput += ` ${column}?: number | ${name}WhereInput | WhereInputColumn<number>\\n`;\n }\n } else {\n let columnType = this.getType(field);\n columns += ` ${column}${meta.optional || meta.nullable ? \"?\" : \"\"}: ${columnType}${meta.nullable ? \" | null\" : \"\"};\\n`;\n WhereInput += ` ${column}?: WhereInputColumn<${columnType}>\\n`;\n\n }\n }\n columns += `}\\n\\n`;\n columnsSchema += `}\\n\\n`;\n columnsSchemaArray += `}\\n\\n`;\n\n WhereInput += `}\\n\\n`;\n\n\n // ts += WhereInput;\n ts += columns;\n ts += columnsSchema;\n ts += columnsSchemaArray;\n\n\n }\n return ts;\n }\n\n iof(field: XqlFields, ...instances: any[]) {\n return instances.some(instance => field instanceof instance);\n }\n\n getType(field: XqlFields) {\n if (this.iof(field, XqlArray) && !Foreign.is(field)) {\n return \"any[]\"\n } else if (this.iof(field, XqlBoolean)) {\n return \"boolean\"\n } else if (this.iof(field, XqlIDField, XqlNumber)) {\n return \"number\"\n } else if (this.iof(field, XqlString)) {\n return \"string\"\n } else if (this.iof(field, XqlDate)) {\n return \"Date\"\n } else if (this.iof(field, XqlEnum)) {\n const enumValues = (field as XqlEnum).meta?.values || [];\n return enumValues.map((v: string | number) => typeof v === \"string\" ? `\"${v}\"` : v).join(\" | \");\n } else if (this.iof(field, XqlFile)) {\n return \"File | string\"\n } else if (this.iof(field, XqlObject)) {\n return \"Record<string, any>\"\n } else if (this.iof(field, XqlRecord)) {\n const keyType: any = this.getType((field as any).keyType);\n const valueType: any = this.getType((field as any).valueType);\n return `Record<${keyType}, ${valueType}>`\n } else if (this.iof(field, XqlTuple)) {\n const types = (field as any).types.map((t: XqlFields) => this.getType(t));\n return `[${types.join(\", \")}]`\n } else if (this.iof(field, XqlUnion)) {\n const types = (field as any).types.map((t: XqlFields) => this.getType(t));\n return types.join(\" | \")\n }\n }\n}\n\nexport default TypesGenerator;"],"names":["Foreign","XqlArray","XqlBoolean","XqlIDField","XqlNumber","XqlString","XqlDate","XqlEnum","XqlFile","XqlObject","XqlRecord","XqlTuple","XqlUnion"],"mappings":"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"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import XqlArray from'../../Types/fields/Array.mjs';import XqlBoolean from'../../Types/fields/Boolean.mjs';import XqlDate from'../../Types/fields/Date.mjs';import XqlEnum from'../../Types/fields/Enum.mjs';import XqlFile from'../../Types/fields/File.mjs';import XqlIDField from'../../Types/fields/IDField.mjs';import XqlNumber from'../../Types/fields/Number.mjs';import XqlObject from'../../Types/fields/Object.mjs';import XqlRecord from'../../Types/fields/Record.mjs';import XqlString from'../../Types/fields/String.mjs';import XqlTuple from'../../Types/fields/Tuple.mjs';import XqlUnion from'../../Types/fields/Union.mjs';import Foreign from'./ForeignInfo.mjs';const ucf = (s) => s.split('_').map(w => w.charAt(0).toUpperCase() + w.slice(1)).join('');
|
|
2
|
+
class TypesGenerator {
|
|
3
|
+
constructor(xansql) {
|
|
4
|
+
this.xansql = xansql;
|
|
5
|
+
}
|
|
6
|
+
async generate(model) {
|
|
7
|
+
const xansql = this.xansql;
|
|
8
|
+
const models = model ? [model] : Array.from(xansql.models.values());
|
|
9
|
+
let ts = ``;
|
|
10
|
+
ts += `export type WhereInputSubConditions<T> = {\n`;
|
|
11
|
+
ts += ` equals?: T;\n`;
|
|
12
|
+
ts += ` not?: T;\n`;
|
|
13
|
+
ts += ` lt?: T;\n`;
|
|
14
|
+
ts += ` lte?: T;\n`;
|
|
15
|
+
ts += ` gt?: T;\n`;
|
|
16
|
+
ts += ` gte?: T;\n`;
|
|
17
|
+
ts += ` in?: T[];\n`;
|
|
18
|
+
ts += ` notIn?: T[];\n`;
|
|
19
|
+
ts += ` between?: [T, T];\n`;
|
|
20
|
+
ts += ` notBetween?: [T, T];\n`;
|
|
21
|
+
ts += ` contains?: T;\n`;
|
|
22
|
+
ts += ` notContains?: T;\n`;
|
|
23
|
+
ts += ` startsWith?: T;\n`;
|
|
24
|
+
ts += ` endsWith?: T;\n`;
|
|
25
|
+
ts += ` isNull?: boolean;\n`;
|
|
26
|
+
ts += ` isNotNull?: boolean;\n`;
|
|
27
|
+
ts += ` isEmpty?: boolean;\n`;
|
|
28
|
+
ts += ` isNotEmpty?: boolean;\n`;
|
|
29
|
+
ts += ` isTrue?: boolean;\n`;
|
|
30
|
+
ts += ` isFalse?: boolean;\n`;
|
|
31
|
+
ts += `}\n`;
|
|
32
|
+
ts += `export type WhereArgsColumn<T> = T | T[] | WhereInputSubConditions<T> | WhereInputSubConditions<T>[];\n\n`;
|
|
33
|
+
ts += `export type SchemaColumnExtends = Record<string, { Columns: any; SchemaColumns: Record<string, any>; SchemaArrayColumns: Record<string, any> }>\n\n`;
|
|
34
|
+
ts += `export type WhereArgs<Columns, SchemaColumns extends SchemaColumnExtends, SchemaArrayColumns extends SchemaColumnExtends> = \n`;
|
|
35
|
+
ts += ` & {[K in keyof Columns]?: WhereArgsColumn<Columns[K]> | WhereArgs<Columns, SchemaColumns, SchemaArrayColumns>[]}\n`;
|
|
36
|
+
ts += ` & { [SK in keyof SchemaColumns]?: number | WhereArgsColumn<number> | WhereArgs<SchemaColumns[SK]['Columns'], SchemaColumns[SK]['SchemaColumns'], SchemaColumns[SK]['SchemaArrayColumns']> | WhereArgs<SchemaColumns[SK]['Columns'], SchemaColumns[SK]['SchemaColumns'], SchemaColumns[SK]['SchemaArrayColumns']>[] }\n`;
|
|
37
|
+
ts += ` & { [SA in keyof SchemaArrayColumns]?: WhereArgs<SchemaArrayColumns[SA]['Columns'], SchemaArrayColumns[SA]['SchemaColumns'], SchemaArrayColumns[SA]['SchemaArrayColumns']> | WhereArgs<SchemaArrayColumns[SA]['Columns'], SchemaArrayColumns[SA]['SchemaColumns'], SchemaArrayColumns[SA]['SchemaArrayColumns']>[] }\n\n\n`;
|
|
38
|
+
// limit args
|
|
39
|
+
ts += `export type LimitArgs = "all" | { take?: number; skip?: number; };\n\n`;
|
|
40
|
+
// order by args
|
|
41
|
+
ts += `export type OrderByArgs<Columns> = { [K in keyof Columns]?: "asc" | "desc" };\n\n`;
|
|
42
|
+
// Aggregate args
|
|
43
|
+
ts += `export type AggregateFunctions = "count" | "sum" | "avg" | "min" | "max";\n`;
|
|
44
|
+
ts += `export type AggregateSelectArgsColumnType = {\n`;
|
|
45
|
+
ts += ` [func in AggregateFunctions]?: boolean | {\n`;
|
|
46
|
+
ts += ` alias?: string;\n`;
|
|
47
|
+
ts += ` orderBy?: "asc" | "desc";\n`;
|
|
48
|
+
ts += ` round?: number;\n`;
|
|
49
|
+
ts += ` distinct?: boolean;\n`;
|
|
50
|
+
ts += ` };\n`;
|
|
51
|
+
ts += `}\n\n`;
|
|
52
|
+
ts += `export type FindArgsAggregate<SchemaArrayColumns extends SchemaColumnExtends> = {\n`;
|
|
53
|
+
ts += ` {[K in keyof SchemaArrayColumns]?: {\n`;
|
|
54
|
+
ts += ` [func in AggregateFunctions]?: boolean | {\n`;
|
|
55
|
+
ts += ` columns?: (keyof SchemaArrayColumns[K]['Columns'] & keyof SchemaArrayColumns[K]['SchemaColumns'])[];\n`;
|
|
56
|
+
ts += ` alias?: string;\n`;
|
|
57
|
+
ts += ` orderBy?: "asc" | "desc";\n`;
|
|
58
|
+
ts += ` round?: number;\n`;
|
|
59
|
+
ts += ` distinct?: boolean;\n`;
|
|
60
|
+
ts += ` };\n`;
|
|
61
|
+
ts += ` }}\n`;
|
|
62
|
+
ts += `}\n\n`;
|
|
63
|
+
ts += `export type SelectArgs<Columns, SchemaColumns extends SchemaColumnExtends, SchemaArrayColumns extends SchemaColumnExtends> = \n`;
|
|
64
|
+
ts += ` & {[K in keyof Columns]?: boolean}\n`;
|
|
65
|
+
ts += ` & { [SK in keyof SchemaColumns]?: boolean | FindArgs<SchemaColumns[SK]['Columns'], SchemaColumns[SK]['SchemaColumns'], SchemaColumns[SK]['SchemaArrayColumns']>}\n`;
|
|
66
|
+
ts += ` & { [SA in keyof SchemaArrayColumns]?: boolean | FindArgs<SchemaArrayColumns[SA]['Columns'], SchemaArrayColumns[SA]['SchemaColumns'], SchemaArrayColumns[SA]['SchemaArrayColumns']>}\n\n`;
|
|
67
|
+
ts += `type FindArgs<Columns, SchemaColumns extends SchemaColumnExtends, SchemaArrayColumns extends SchemaColumnExtends> = {\n`;
|
|
68
|
+
ts += ` distinct?: (keyof Columns & keyof SchemaColumns)[];\n`;
|
|
69
|
+
ts += ` where?: WhereArgs<Columns, SchemaColumns, SchemaArrayColumns>;\n`;
|
|
70
|
+
ts += ` select?: SelectArgs<Columns, SchemaColumns, SchemaArrayColumns>;\n`;
|
|
71
|
+
ts += ` orderBy?: OrderByArgs<Columns>;\n`;
|
|
72
|
+
ts += ` limit?: LimitArgs\n`;
|
|
73
|
+
ts += ` aggregate?: {\n`;
|
|
74
|
+
ts += ` [func in "count" | "sum" | "avg" | "min" | "max"]?: boolean | {\n`;
|
|
75
|
+
ts += ` columns?: (keyof Columns & keyof SchemaColumns)[];\n`;
|
|
76
|
+
ts += ` alias?: string;\n`;
|
|
77
|
+
ts += ` orderBy?: "asc" | "desc";\n`;
|
|
78
|
+
ts += ` round?: number;\n`;
|
|
79
|
+
ts += ` distinct?: boolean;\n`;
|
|
80
|
+
ts += ` };\n`;
|
|
81
|
+
ts += ` };\n`;
|
|
82
|
+
ts += `}\n\n`;
|
|
83
|
+
for (let model of models) {
|
|
84
|
+
ts += `//========== ${model.table} Table types=============\n\n`.toUpperCase();
|
|
85
|
+
`export type ${ucf(model.table)}WhereInput {\n`;
|
|
86
|
+
let columns = `export type ${ucf(model.table)}Columns = {\n`;
|
|
87
|
+
let columnsSchema = `export type ${ucf(model.table)}SchemaColumns = {\n`;
|
|
88
|
+
let columnsSchemaArray = `export type ${ucf(model.table)}SchemaArrayColumns = {\n`;
|
|
89
|
+
for (let column in model.schema) {
|
|
90
|
+
const field = model.schema[column];
|
|
91
|
+
const meta = field.meta || {};
|
|
92
|
+
if (Foreign.is(field)) {
|
|
93
|
+
const foreign = Foreign.get(model, column);
|
|
94
|
+
const FModel = model.xansql.getModel(foreign.table);
|
|
95
|
+
const name = ucf(FModel.table);
|
|
96
|
+
if (Foreign.isArray(field)) {
|
|
97
|
+
columnsSchemaArray += ` ${column}: {\n`;
|
|
98
|
+
columnsSchemaArray += ` Columns: ${name}Columns;\n`;
|
|
99
|
+
columnsSchemaArray += ` SchemaColumns: ${name}SchemaColumns;\n`;
|
|
100
|
+
columnsSchemaArray += ` SchemaArrayColumns: ${name}SchemaArrayColumns\n`;
|
|
101
|
+
columnsSchemaArray += ` }\n`;
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
columnsSchema += ` ${column}: {\n`;
|
|
105
|
+
columnsSchema += ` Columns: ${name}Columns;\n`;
|
|
106
|
+
columnsSchema += ` SchemaColumns: ${name}SchemaColumns;\n`;
|
|
107
|
+
columnsSchema += ` SchemaArrayColumns: ${name}SchemaArrayColumns\n`;
|
|
108
|
+
columnsSchema += ` }\n`;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
let columnType = this.getType(field);
|
|
113
|
+
columns += ` ${column}${meta.optional || meta.nullable ? "?" : ""}: ${columnType}${meta.nullable ? " | null" : ""};\n`;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
columns += `}\n\n`;
|
|
117
|
+
columnsSchema += `}\n\n`;
|
|
118
|
+
columnsSchemaArray += `}\n\n`;
|
|
119
|
+
// ts += WhereInput;
|
|
120
|
+
ts += columns;
|
|
121
|
+
ts += columnsSchema;
|
|
122
|
+
ts += columnsSchemaArray;
|
|
123
|
+
}
|
|
124
|
+
return ts;
|
|
125
|
+
}
|
|
126
|
+
iof(field, ...instances) {
|
|
127
|
+
return instances.some(instance => field instanceof instance);
|
|
128
|
+
}
|
|
129
|
+
getType(field) {
|
|
130
|
+
var _a;
|
|
131
|
+
if (this.iof(field, XqlArray) && !Foreign.is(field)) {
|
|
132
|
+
return "any[]";
|
|
133
|
+
}
|
|
134
|
+
else if (this.iof(field, XqlBoolean)) {
|
|
135
|
+
return "boolean";
|
|
136
|
+
}
|
|
137
|
+
else if (this.iof(field, XqlIDField, XqlNumber)) {
|
|
138
|
+
return "number";
|
|
139
|
+
}
|
|
140
|
+
else if (this.iof(field, XqlString)) {
|
|
141
|
+
return "string";
|
|
142
|
+
}
|
|
143
|
+
else if (this.iof(field, XqlDate)) {
|
|
144
|
+
return "Date";
|
|
145
|
+
}
|
|
146
|
+
else if (this.iof(field, XqlEnum)) {
|
|
147
|
+
const enumValues = ((_a = field.meta) === null || _a === void 0 ? void 0 : _a.values) || [];
|
|
148
|
+
return enumValues.map((v) => typeof v === "string" ? `"${v}"` : v).join(" | ");
|
|
149
|
+
}
|
|
150
|
+
else if (this.iof(field, XqlFile)) {
|
|
151
|
+
return "File | string";
|
|
152
|
+
}
|
|
153
|
+
else if (this.iof(field, XqlObject)) {
|
|
154
|
+
return "Record<string, any>";
|
|
155
|
+
}
|
|
156
|
+
else if (this.iof(field, XqlRecord)) {
|
|
157
|
+
const keyType = this.getType(field.keyType);
|
|
158
|
+
const valueType = this.getType(field.valueType);
|
|
159
|
+
return `Record<${keyType}, ${valueType}>`;
|
|
160
|
+
}
|
|
161
|
+
else if (this.iof(field, XqlTuple)) {
|
|
162
|
+
const types = field.types.map((t) => this.getType(t));
|
|
163
|
+
return `[${types.join(", ")}]`;
|
|
164
|
+
}
|
|
165
|
+
else if (this.iof(field, XqlUnion)) {
|
|
166
|
+
const types = field.types.map((t) => this.getType(t));
|
|
167
|
+
return types.join(" | ");
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}export{TypesGenerator as default};//# sourceMappingURL=TypesGenerator.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TypesGenerator.mjs","sources":["../../../src/core/classes/TypesGenerator.ts"],"sourcesContent":["import Model from \"../../model\";\nimport ValueFormatter from \"../../model/include/ValueFormatter\";\nimport XqlArray from \"../../Types/fields/Array\";\nimport XqlBoolean from \"../../Types/fields/Boolean\";\nimport XqlDate from \"../../Types/fields/Date\";\nimport XqlEnum from \"../../Types/fields/Enum\";\nimport XqlFile from \"../../Types/fields/File\";\nimport XqlIDField from \"../../Types/fields/IDField\";\nimport XqlNumber from \"../../Types/fields/Number\";\nimport XqlObject from \"../../Types/fields/Object\";\nimport XqlRecord from \"../../Types/fields/Record\";\nimport XqlSchema from \"../../Types/fields/Schema\";\nimport XqlString from \"../../Types/fields/String\";\nimport XqlTuple from \"../../Types/fields/Tuple\";\nimport XqlUnion from \"../../Types/fields/Union\";\nimport { XqlFields } from \"../../Types/types\";\nimport Xansql from \"../Xansql\";\nimport Foreign from \"./ForeignInfo\";\n\n\nconst ucf = (s: string) => s.split('_').map(w => w.charAt(0).toUpperCase() + w.slice(1)).join('');\n\nclass TypesGenerator {\n xansql: Xansql;\n\n constructor(xansql: Xansql) {\n this.xansql = xansql;\n }\n\n async generate(model?: Model) {\n const xansql = this.xansql;\n const models = model ? [model] : Array.from(xansql.models.values());\n\n let ts = ``;\n ts += `export type WhereInputSubConditions<T> = {\\n`;\n ts += ` equals?: T;\\n`;\n ts += ` not?: T;\\n`;\n ts += ` lt?: T;\\n`;\n ts += ` lte?: T;\\n`;\n ts += ` gt?: T;\\n`;\n ts += ` gte?: T;\\n`;\n ts += ` in?: T[];\\n`;\n ts += ` notIn?: T[];\\n`;\n ts += ` between?: [T, T];\\n`;\n ts += ` notBetween?: [T, T];\\n`;\n ts += ` contains?: T;\\n`;\n ts += ` notContains?: T;\\n`;\n ts += ` startsWith?: T;\\n`;\n ts += ` endsWith?: T;\\n`;\n ts += ` isNull?: boolean;\\n`;\n ts += ` isNotNull?: boolean;\\n`;\n ts += ` isEmpty?: boolean;\\n`;\n ts += ` isNotEmpty?: boolean;\\n`;\n ts += ` isTrue?: boolean;\\n`;\n ts += ` isFalse?: boolean;\\n`;\n ts += `}\\n`;\n\n ts += `export type WhereArgsColumn<T> = T | T[] | WhereInputSubConditions<T> | WhereInputSubConditions<T>[];\\n\\n`;\n\n ts += `export type SchemaColumnExtends = Record<string, { Columns: any; SchemaColumns: Record<string, any>; SchemaArrayColumns: Record<string, any> }>\\n\\n`\n ts += `export type WhereArgs<Columns, SchemaColumns extends SchemaColumnExtends, SchemaArrayColumns extends SchemaColumnExtends> = \\n`;\n ts += ` & {[K in keyof Columns]?: WhereArgsColumn<Columns[K]> | WhereArgs<Columns, SchemaColumns, SchemaArrayColumns>[]}\\n`;\n ts += ` & { [SK in keyof SchemaColumns]?: number | WhereArgsColumn<number> | WhereArgs<SchemaColumns[SK]['Columns'], SchemaColumns[SK]['SchemaColumns'], SchemaColumns[SK]['SchemaArrayColumns']> | WhereArgs<SchemaColumns[SK]['Columns'], SchemaColumns[SK]['SchemaColumns'], SchemaColumns[SK]['SchemaArrayColumns']>[] }\\n`\n ts += ` & { [SA in keyof SchemaArrayColumns]?: WhereArgs<SchemaArrayColumns[SA]['Columns'], SchemaArrayColumns[SA]['SchemaColumns'], SchemaArrayColumns[SA]['SchemaArrayColumns']> | WhereArgs<SchemaArrayColumns[SA]['Columns'], SchemaArrayColumns[SA]['SchemaColumns'], SchemaArrayColumns[SA]['SchemaArrayColumns']>[] }\\n\\n\\n`\n\n\n // limit args\n ts += `export type LimitArgs = \"all\" | { take?: number; skip?: number; };\\n\\n`;\n\n // order by args\n ts += `export type OrderByArgs<Columns> = { [K in keyof Columns]?: \"asc\" | \"desc\" };\\n\\n`;\n\n // Aggregate args\n\n ts += `export type AggregateFunctions = \"count\" | \"sum\" | \"avg\" | \"min\" | \"max\";\\n`;\n ts += `export type AggregateSelectArgsColumnType = {\\n`;\n ts += ` [func in AggregateFunctions]?: boolean | {\\n`;\n ts += ` alias?: string;\\n`;\n ts += ` orderBy?: \"asc\" | \"desc\";\\n`;\n ts += ` round?: number;\\n`;\n ts += ` distinct?: boolean;\\n`;\n ts += ` };\\n`;\n ts += `}\\n\\n`;\n\n ts += `export type FindArgsAggregate<SchemaArrayColumns extends SchemaColumnExtends> = {\\n`;\n ts += ` {[K in keyof SchemaArrayColumns]?: {\\n`;\n ts += ` [func in AggregateFunctions]?: boolean | {\\n`;\n ts += ` columns?: (keyof SchemaArrayColumns[K]['Columns'] & keyof SchemaArrayColumns[K]['SchemaColumns'])[];\\n`;\n ts += ` alias?: string;\\n`;\n ts += ` orderBy?: \"asc\" | \"desc\";\\n`;\n ts += ` round?: number;\\n`;\n ts += ` distinct?: boolean;\\n`;\n ts += ` };\\n`;\n ts += ` }}\\n`;\n ts += `}\\n\\n`;\n\n\n ts += `export type SelectArgs<Columns, SchemaColumns extends SchemaColumnExtends, SchemaArrayColumns extends SchemaColumnExtends> = \\n`;\n ts += ` & {[K in keyof Columns]?: boolean}\\n`;\n ts += ` & { [SK in keyof SchemaColumns]?: boolean | FindArgs<SchemaColumns[SK]['Columns'], SchemaColumns[SK]['SchemaColumns'], SchemaColumns[SK]['SchemaArrayColumns']>}\\n`;\n ts += ` & { [SA in keyof SchemaArrayColumns]?: boolean | FindArgs<SchemaArrayColumns[SA]['Columns'], SchemaArrayColumns[SA]['SchemaColumns'], SchemaArrayColumns[SA]['SchemaArrayColumns']>}\\n\\n`;\n\n ts += `type FindArgs<Columns, SchemaColumns extends SchemaColumnExtends, SchemaArrayColumns extends SchemaColumnExtends> = {\\n`;\n ts += ` distinct?: (keyof Columns & keyof SchemaColumns)[];\\n`;\n ts += ` where?: WhereArgs<Columns, SchemaColumns, SchemaArrayColumns>;\\n`;\n ts += ` select?: SelectArgs<Columns, SchemaColumns, SchemaArrayColumns>;\\n`;\n ts += ` orderBy?: OrderByArgs<Columns>;\\n`;\n ts += ` limit?: LimitArgs\\n`;\n ts += ` aggregate?: {\\n`;\n ts += ` [func in \"count\" | \"sum\" | \"avg\" | \"min\" | \"max\"]?: boolean | {\\n`;\n ts += ` columns?: (keyof Columns & keyof SchemaColumns)[];\\n`;\n ts += ` alias?: string;\\n`;\n ts += ` orderBy?: \"asc\" | \"desc\";\\n`;\n ts += ` round?: number;\\n`;\n ts += ` distinct?: boolean;\\n`;\n ts += ` };\\n`;\n ts += ` };\\n`;\n ts += `}\\n\\n`;\n\n\n\n\n for (let model of models) {\n ts += `//========== ${model.table} Table types=============\\n\\n`.toUpperCase();\n let WhereInput = `export type ${ucf(model.table)}WhereInput {\\n`;\n\n let columns = `export type ${ucf(model.table)}Columns = {\\n`;\n let columnsSchema = `export type ${ucf(model.table)}SchemaColumns = {\\n`\n let columnsSchemaArray = `export type ${ucf(model.table)}SchemaArrayColumns = {\\n`\n\n\n for (let column in model.schema) {\n const field = model.schema[column];\n const meta = field.meta || {};\n if (Foreign.is(field)) {\n const foreign = Foreign.get(model, column);\n const FModel = model.xansql.getModel(foreign.table);\n const name = ucf(FModel.table)\n if (Foreign.isArray(field)) {\n columnsSchemaArray += ` ${column}: {\\n`\n columnsSchemaArray += ` Columns: ${name}Columns;\\n`\n columnsSchemaArray += ` SchemaColumns: ${name}SchemaColumns;\\n`\n columnsSchemaArray += ` SchemaArrayColumns: ${name}SchemaArrayColumns\\n`\n columnsSchemaArray += ` }\\n`\n WhereInput += ` ${column}?: ${name}WhereInput | ${name}WhereInput[];\\n`;\n } else {\n columnsSchema += ` ${column}: {\\n`\n columnsSchema += ` Columns: ${name}Columns;\\n`\n columnsSchema += ` SchemaColumns: ${name}SchemaColumns;\\n`\n columnsSchema += ` SchemaArrayColumns: ${name}SchemaArrayColumns\\n`\n columnsSchema += ` }\\n`\n WhereInput += ` ${column}?: number | ${name}WhereInput | WhereInputColumn<number>\\n`;\n }\n } else {\n let columnType = this.getType(field);\n columns += ` ${column}${meta.optional || meta.nullable ? \"?\" : \"\"}: ${columnType}${meta.nullable ? \" | null\" : \"\"};\\n`;\n WhereInput += ` ${column}?: WhereInputColumn<${columnType}>\\n`;\n\n }\n }\n columns += `}\\n\\n`;\n columnsSchema += `}\\n\\n`;\n columnsSchemaArray += `}\\n\\n`;\n\n WhereInput += `}\\n\\n`;\n\n\n // ts += WhereInput;\n ts += columns;\n ts += columnsSchema;\n ts += columnsSchemaArray;\n\n\n }\n return ts;\n }\n\n iof(field: XqlFields, ...instances: any[]) {\n return instances.some(instance => field instanceof instance);\n }\n\n getType(field: XqlFields) {\n if (this.iof(field, XqlArray) && !Foreign.is(field)) {\n return \"any[]\"\n } else if (this.iof(field, XqlBoolean)) {\n return \"boolean\"\n } else if (this.iof(field, XqlIDField, XqlNumber)) {\n return \"number\"\n } else if (this.iof(field, XqlString)) {\n return \"string\"\n } else if (this.iof(field, XqlDate)) {\n return \"Date\"\n } else if (this.iof(field, XqlEnum)) {\n const enumValues = (field as XqlEnum).meta?.values || [];\n return enumValues.map((v: string | number) => typeof v === \"string\" ? `\"${v}\"` : v).join(\" | \");\n } else if (this.iof(field, XqlFile)) {\n return \"File | string\"\n } else if (this.iof(field, XqlObject)) {\n return \"Record<string, any>\"\n } else if (this.iof(field, XqlRecord)) {\n const keyType: any = this.getType((field as any).keyType);\n const valueType: any = this.getType((field as any).valueType);\n return `Record<${keyType}, ${valueType}>`\n } else if (this.iof(field, XqlTuple)) {\n const types = (field as any).types.map((t: XqlFields) => this.getType(t));\n return `[${types.join(\", \")}]`\n } else if (this.iof(field, XqlUnion)) {\n const types = (field as any).types.map((t: XqlFields) => this.getType(t));\n return types.join(\" | \")\n }\n }\n}\n\nexport default TypesGenerator;"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var XansqlError=require('../XansqlError.js');class XansqlConfig {
|
|
2
|
+
constructor(xansql, config) {
|
|
3
|
+
this.engins = ['mysql', 'postgresql', 'sqlite'];
|
|
4
|
+
this.xansql = xansql;
|
|
5
|
+
this.config = config;
|
|
6
|
+
if (!config.dialect)
|
|
7
|
+
throw new XansqlError.default({
|
|
8
|
+
message: `Dialect configuration is required in Xansql config.`,
|
|
9
|
+
});
|
|
10
|
+
if (!config.dialect.engine && !config.dialect.execute)
|
|
11
|
+
throw new XansqlError.default({
|
|
12
|
+
message: `Dialect engine and execute function are required in Xansql config.`,
|
|
13
|
+
});
|
|
14
|
+
if (this.engins.indexOf(config.dialect.engine) === -1)
|
|
15
|
+
throw new XansqlError.default({
|
|
16
|
+
message: `Dialect engine must be one of ${this.engins.join(', ')}`,
|
|
17
|
+
});
|
|
18
|
+
if (typeof config.dialect.execute !== 'function')
|
|
19
|
+
throw new XansqlError.default({
|
|
20
|
+
message: `Dialect execute must be a function.`,
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
parse() {
|
|
24
|
+
var _a, _b, _c, _d;
|
|
25
|
+
const config = Object.assign(Object.assign({}, this.config), { maxLimit: {
|
|
26
|
+
find: ((_a = this.config.maxLimit) === null || _a === void 0 ? void 0 : _a.find) || 100,
|
|
27
|
+
create: ((_b = this.config.maxLimit) === null || _b === void 0 ? void 0 : _b.create) || 100,
|
|
28
|
+
update: ((_c = this.config.maxLimit) === null || _c === void 0 ? void 0 : _c.update) || 100,
|
|
29
|
+
delete: ((_d = this.config.maxLimit) === null || _d === void 0 ? void 0 : _d.delete) || 100,
|
|
30
|
+
} });
|
|
31
|
+
return config;
|
|
32
|
+
}
|
|
33
|
+
}exports.default=XansqlConfig;//# sourceMappingURL=XansqlConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"XansqlConfig.js","sources":["../../../src/core/classes/XansqlConfig.ts"],"sourcesContent":["import { XansqlConfigTypeRequired, XansqlConfigType, XansqlDialectEngine } from \"../type\";\nimport Xansql from \"../Xansql\";\nimport XansqlError from \"../XansqlError\";\n\nclass XansqlConfig {\n readonly xansql: Xansql;\n readonly config: XansqlConfigType;\n readonly engins: XansqlDialectEngine[] = ['mysql', 'postgresql', 'sqlite'];\n constructor(xansql: Xansql, config: XansqlConfigType) {\n this.xansql = xansql;\n this.config = config;\n\n if (!config.dialect) throw new XansqlError({\n message: `Dialect configuration is required in Xansql config.`,\n })\n if (!config.dialect.engine && !config.dialect.execute) throw new XansqlError({\n message: `Dialect engine and execute function are required in Xansql config.`,\n })\n if (this.engins.indexOf(config.dialect.engine) === -1) throw new XansqlError({\n message: `Dialect engine must be one of ${this.engins.join(', ')}`,\n })\n if (typeof config.dialect.execute !== 'function') throw new XansqlError({\n message: `Dialect execute must be a function.`,\n })\n }\n\n parse() {\n const config = {\n ...this.config,\n maxLimit: {\n find: this.config.maxLimit?.find || 100,\n create: this.config.maxLimit?.create || 100,\n update: this.config.maxLimit?.update || 100,\n delete: this.config.maxLimit?.delete || 100,\n },\n }\n\n return config as XansqlConfigTypeRequired\n }\n}\n\nexport default XansqlConfig;"],"names":["XansqlError"],"mappings":"mHAIA,MAAM,YAAY,CAAA;IAIf,WAAA,CAAY,MAAc,EAAE,MAAwB,EAAA;QAD3C,IAAA,CAAA,MAAM,GAA0B,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC;AAEvE,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;QAEpB,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,MAAM,IAAIA,mBAAW,CAAC;AACxC,gBAAA,OAAO,EAAE,CAAA,mDAAA,CAAqD;AAChE,aAAA,CAAC;AACF,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO;YAAE,MAAM,IAAIA,mBAAW,CAAC;AAC1E,gBAAA,OAAO,EAAE,CAAA,kEAAA,CAAoE;AAC/E,aAAA,CAAC;AACF,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE;YAAE,MAAM,IAAIA,mBAAW,CAAC;gBAC1E,OAAO,EAAE,CAAA,8BAAA,EAAiC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAE;AACpE,aAAA,CAAC;AACF,QAAA,IAAI,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,KAAK,UAAU;YAAE,MAAM,IAAIA,mBAAW,CAAC;AACrE,gBAAA,OAAO,EAAE,CAAA,mCAAA,CAAqC;AAChD,aAAA,CAAC;IACL;IAEA,KAAK,GAAA;;AACF,QAAA,MAAM,MAAM,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACN,IAAI,CAAC,MAAM,CAAA,EAAA,EACd,QAAQ,EAAE;gBACP,IAAI,EAAE,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,IAAI,KAAI,GAAG;gBACvC,MAAM,EAAE,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,MAAM,KAAI,GAAG;gBAC3C,MAAM,EAAE,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,MAAM,KAAI,GAAG;gBAC3C,MAAM,EAAE,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,MAAM,KAAI,GAAG;AAC7C,aAAA,EAAA,CACH;AAED,QAAA,OAAO,MAAkC;IAC5C;AACF"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import XansqlError from'../XansqlError.mjs';class XansqlConfig {
|
|
2
|
+
constructor(xansql, config) {
|
|
3
|
+
this.engins = ['mysql', 'postgresql', 'sqlite'];
|
|
4
|
+
this.xansql = xansql;
|
|
5
|
+
this.config = config;
|
|
6
|
+
if (!config.dialect)
|
|
7
|
+
throw new XansqlError({
|
|
8
|
+
message: `Dialect configuration is required in Xansql config.`,
|
|
9
|
+
});
|
|
10
|
+
if (!config.dialect.engine && !config.dialect.execute)
|
|
11
|
+
throw new XansqlError({
|
|
12
|
+
message: `Dialect engine and execute function are required in Xansql config.`,
|
|
13
|
+
});
|
|
14
|
+
if (this.engins.indexOf(config.dialect.engine) === -1)
|
|
15
|
+
throw new XansqlError({
|
|
16
|
+
message: `Dialect engine must be one of ${this.engins.join(', ')}`,
|
|
17
|
+
});
|
|
18
|
+
if (typeof config.dialect.execute !== 'function')
|
|
19
|
+
throw new XansqlError({
|
|
20
|
+
message: `Dialect execute must be a function.`,
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
parse() {
|
|
24
|
+
var _a, _b, _c, _d;
|
|
25
|
+
const config = Object.assign(Object.assign({}, this.config), { maxLimit: {
|
|
26
|
+
find: ((_a = this.config.maxLimit) === null || _a === void 0 ? void 0 : _a.find) || 100,
|
|
27
|
+
create: ((_b = this.config.maxLimit) === null || _b === void 0 ? void 0 : _b.create) || 100,
|
|
28
|
+
update: ((_c = this.config.maxLimit) === null || _c === void 0 ? void 0 : _c.update) || 100,
|
|
29
|
+
delete: ((_d = this.config.maxLimit) === null || _d === void 0 ? void 0 : _d.delete) || 100,
|
|
30
|
+
} });
|
|
31
|
+
return config;
|
|
32
|
+
}
|
|
33
|
+
}export{XansqlConfig as default};//# sourceMappingURL=XansqlConfig.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"XansqlConfig.mjs","sources":["../../../src/core/classes/XansqlConfig.ts"],"sourcesContent":["import { XansqlConfigTypeRequired, XansqlConfigType, XansqlDialectEngine } from \"../type\";\nimport Xansql from \"../Xansql\";\nimport XansqlError from \"../XansqlError\";\n\nclass XansqlConfig {\n readonly xansql: Xansql;\n readonly config: XansqlConfigType;\n readonly engins: XansqlDialectEngine[] = ['mysql', 'postgresql', 'sqlite'];\n constructor(xansql: Xansql, config: XansqlConfigType) {\n this.xansql = xansql;\n this.config = config;\n\n if (!config.dialect) throw new XansqlError({\n message: `Dialect configuration is required in Xansql config.`,\n })\n if (!config.dialect.engine && !config.dialect.execute) throw new XansqlError({\n message: `Dialect engine and execute function are required in Xansql config.`,\n })\n if (this.engins.indexOf(config.dialect.engine) === -1) throw new XansqlError({\n message: `Dialect engine must be one of ${this.engins.join(', ')}`,\n })\n if (typeof config.dialect.execute !== 'function') throw new XansqlError({\n message: `Dialect execute must be a function.`,\n })\n }\n\n parse() {\n const config = {\n ...this.config,\n maxLimit: {\n find: this.config.maxLimit?.find || 100,\n create: this.config.maxLimit?.create || 100,\n update: this.config.maxLimit?.update || 100,\n delete: this.config.maxLimit?.delete || 100,\n },\n }\n\n return config as XansqlConfigTypeRequired\n }\n}\n\nexport default XansqlConfig;"],"names":[],"mappings":"4CAIA,MAAM,YAAY,CAAA;IAIf,WAAA,CAAY,MAAc,EAAE,MAAwB,EAAA;QAD3C,IAAA,CAAA,MAAM,GAA0B,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC;AAEvE,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;QAEpB,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,MAAM,IAAI,WAAW,CAAC;AACxC,gBAAA,OAAO,EAAE,CAAA,mDAAA,CAAqD;AAChE,aAAA,CAAC;AACF,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO;YAAE,MAAM,IAAI,WAAW,CAAC;AAC1E,gBAAA,OAAO,EAAE,CAAA,kEAAA,CAAoE;AAC/E,aAAA,CAAC;AACF,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE;YAAE,MAAM,IAAI,WAAW,CAAC;gBAC1E,OAAO,EAAE,CAAA,8BAAA,EAAiC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAE;AACpE,aAAA,CAAC;AACF,QAAA,IAAI,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,KAAK,UAAU;YAAE,MAAM,IAAI,WAAW,CAAC;AACrE,gBAAA,OAAO,EAAE,CAAA,mCAAA,CAAqC;AAChD,aAAA,CAAC;IACL;IAEA,KAAK,GAAA;;AACF,QAAA,MAAM,MAAM,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACN,IAAI,CAAC,MAAM,CAAA,EAAA,EACd,QAAQ,EAAE;gBACP,IAAI,EAAE,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,IAAI,KAAI,GAAG;gBACvC,MAAM,EAAE,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,MAAM,KAAI,GAAG;gBAC3C,MAAM,EAAE,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,MAAM,KAAI,GAAG;gBAC3C,MAAM,EAAE,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,MAAM,KAAI,GAAG;AAC7C,aAAA,EAAA,CACH;AAED,QAAA,OAAO,MAAkC;IAC5C;AACF"}
|