sonamu 0.0.3 → 0.0.5
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/dist/api/init.d.ts +0 -1
- package/dist/api/init.d.ts.map +1 -1
- package/dist/api/init.js +6 -4
- package/dist/api/init.js.map +1 -1
- package/dist/database/db.d.ts.map +1 -1
- package/dist/database/db.js +6 -6
- package/dist/database/db.js.map +1 -1
- package/dist/templates/view_form.template.d.ts +2 -2
- package/dist/templates/view_list.template.d.ts +2 -2
- package/dist/testing/fixture-manager.d.ts +7 -3
- package/dist/testing/fixture-manager.d.ts.map +1 -1
- package/dist/testing/fixture-manager.js +66 -28
- package/dist/testing/fixture-manager.js.map +1 -1
- package/dist/types/types.d.ts +10 -10
- package/dist/utils/utils.d.ts +1 -0
- package/dist/utils/utils.d.ts.map +1 -1
- package/dist/utils/utils.js +18 -1
- package/dist/utils/utils.js.map +1 -1
- package/package.json +1 -1
- package/src/api/init.ts +6 -5
- package/src/database/db.ts +8 -7
- package/src/testing/fixture-manager.ts +53 -29
- package/src/utils/utils.ts +14 -0
- package/dist/database/f9-base-model.d.ts +0 -39
- package/dist/database/f9-base-model.d.ts.map +0 -1
- package/dist/database/f9-base-model.js +0 -229
- package/dist/database/f9-base-model.js.map +0 -1
- package/dist/database/f9-db.d.ts +0 -23
- package/dist/database/f9-db.d.ts.map +0 -1
- package/dist/database/f9-db.js +0 -109
- package/dist/database/f9-db.js.map +0 -1
- package/dist/exceptions/exceptions.d.ts +0 -48
- package/dist/exceptions/exceptions.d.ts.map +0 -1
- package/dist/exceptions/exceptions.js +0 -105
- package/dist/exceptions/exceptions.js.map +0 -1
- package/dist/exceptions/f9-exception.d.ts +0 -48
- package/dist/exceptions/f9-exception.d.ts.map +0 -1
- package/dist/exceptions/f9-exception.js +0 -105
- package/dist/exceptions/f9-exception.js.map +0 -1
- package/dist/exceptions/index.d.ts +0 -3
- package/dist/exceptions/index.d.ts.map +0 -1
- package/dist/exceptions/index.js +0 -19
- package/dist/exceptions/index.js.map +0 -1
- package/dist/f9-md/f9-md.d.ts +0 -29
- package/dist/f9-md/f9-md.d.ts.map +0 -1
- package/dist/f9-md/f9-md.js +0 -148
- package/dist/f9-md/f9-md.js.map +0 -1
- package/dist/f9-md/index.d.ts +0 -5
- package/dist/f9-md/index.d.ts.map +0 -1
- package/dist/f9-md/index.js +0 -21
- package/dist/f9-md/index.js.map +0 -1
- package/dist/f9-md/md-utils.d.ts +0 -55
- package/dist/f9-md/md-utils.d.ts.map +0 -1
- package/dist/f9-md/md-utils.js +0 -104
- package/dist/f9-md/md-utils.js.map +0 -1
- package/dist/f9-md/migrator.d.ts +0 -79
- package/dist/f9-md/migrator.d.ts.map +0 -1
- package/dist/f9-md/migrator.js +0 -1084
- package/dist/f9-md/migrator.js.map +0 -1
- package/dist/f9-md/model-definition.d.ts +0 -40
- package/dist/f9-md/model-definition.d.ts.map +0 -1
- package/dist/f9-md/model-definition.js +0 -409
- package/dist/f9-md/model-definition.js.map +0 -1
- package/dist/templates/bridge.template.d.ts +0 -17
- package/dist/templates/bridge.template.d.ts.map +0 -1
- package/dist/templates/bridge.template.js +0 -79
- package/dist/templates/bridge.template.js.map +0 -1
- package/dist/templates/md.template.d.ts +0 -17
- package/dist/templates/md.template.d.ts.map +0 -1
- package/dist/templates/md.template.js +0 -45
- package/dist/templates/md.template.js.map +0 -1
- package/dist/testing/f9-fixture-manager.d.ts +0 -16
- package/dist/testing/f9-fixture-manager.d.ts.map +0 -1
- package/dist/testing/f9-fixture-manager.js +0 -211
- package/dist/testing/f9-fixture-manager.js.map +0 -1
- package/dist/types/index.d.ts +0 -2
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -18
- package/dist/types/index.js.map +0 -1
- package/dist/types/shared.d.ts +0 -725
- package/dist/types/shared.d.ts.map +0 -1
- package/dist/types/shared.js +0 -288
- package/dist/types/shared.js.map +0 -1
- package/dist/utils/f9-cache.d.ts +0 -1
- package/dist/utils/f9-cache.d.ts.map +0 -1
- package/dist/utils/f9-cache.js +0 -113
- package/dist/utils/f9-cache.js.map +0 -1
- package/dist/utils/index.d.ts +0 -4
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/index.js +0 -20
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/tf-utils.d.ts +0 -6
- package/dist/utils/tf-utils.d.ts.map +0 -1
- package/dist/utils/tf-utils.js +0 -67
- package/dist/utils/tf-utils.js.map +0 -1
package/src/database/db.ts
CHANGED
|
@@ -2,7 +2,7 @@ export type DBPreset = "w" | "r";
|
|
|
2
2
|
import knex, { Knex } from "knex";
|
|
3
3
|
import path from "path";
|
|
4
4
|
import { ServiceUnavailableException } from "../exceptions/so-exceptions";
|
|
5
|
-
import {
|
|
5
|
+
import { findAppRootPath } from "../utils/utils";
|
|
6
6
|
|
|
7
7
|
export type SonamuDBConfig = {
|
|
8
8
|
development_master: Knex.Config;
|
|
@@ -19,9 +19,13 @@ class DBClass {
|
|
|
19
19
|
private rdb?: Knex;
|
|
20
20
|
private knexfile?: SonamuDBConfig;
|
|
21
21
|
|
|
22
|
-
async readKnexfile() {
|
|
22
|
+
async readKnexfile(): Promise<SonamuDBConfig> {
|
|
23
|
+
if (this.knexfile) {
|
|
24
|
+
return this.knexfile;
|
|
25
|
+
}
|
|
26
|
+
|
|
23
27
|
const configPath: string = path.join(
|
|
24
|
-
|
|
28
|
+
await findAppRootPath(),
|
|
25
29
|
"/api/dist/configs/db"
|
|
26
30
|
);
|
|
27
31
|
try {
|
|
@@ -40,7 +44,7 @@ class DBClass {
|
|
|
40
44
|
return this.knexfile;
|
|
41
45
|
}
|
|
42
46
|
|
|
43
|
-
throw new ServiceUnavailableException("DB
|
|
47
|
+
throw new ServiceUnavailableException("DB설정이 로드되지 않았습니다.");
|
|
44
48
|
}
|
|
45
49
|
|
|
46
50
|
getDB(which: DBPreset): Knex {
|
|
@@ -80,9 +84,6 @@ class DBClass {
|
|
|
80
84
|
|
|
81
85
|
async destroy(): Promise<void> {
|
|
82
86
|
if (this.wdb !== undefined) {
|
|
83
|
-
if (this.wdb.destroy === undefined) {
|
|
84
|
-
console.log(this.wdb);
|
|
85
|
-
}
|
|
86
87
|
await this.wdb.destroy();
|
|
87
88
|
this.wdb = undefined;
|
|
88
89
|
}
|
|
@@ -11,16 +11,18 @@ import {
|
|
|
11
11
|
} from "../types/types";
|
|
12
12
|
|
|
13
13
|
export class FixtureManager {
|
|
14
|
-
private
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
private config?: {
|
|
15
|
+
tdb: Knex;
|
|
16
|
+
fdb: Knex;
|
|
17
|
+
knexfile: SonamuDBConfig;
|
|
18
|
+
};
|
|
17
19
|
|
|
18
20
|
constructor(public usingTables?: string[]) {
|
|
19
|
-
this.knexfile = DB.getKnexfile();
|
|
20
|
-
this.tdb = knex(this.knexfile.test);
|
|
21
|
-
this.fdb = knex(this.knexfile.fixture_local);
|
|
22
|
-
|
|
23
21
|
if (process.env.NODE_ENV === "test") {
|
|
22
|
+
beforeAll(async () => {
|
|
23
|
+
await this.init();
|
|
24
|
+
});
|
|
25
|
+
|
|
24
26
|
beforeEach(async () => {
|
|
25
27
|
await this.cleanAndSeed();
|
|
26
28
|
});
|
|
@@ -32,13 +34,32 @@ export class FixtureManager {
|
|
|
32
34
|
}
|
|
33
35
|
}
|
|
34
36
|
|
|
37
|
+
async init(): Promise<{
|
|
38
|
+
tdb: Knex;
|
|
39
|
+
fdb: Knex;
|
|
40
|
+
knexfile: SonamuDBConfig;
|
|
41
|
+
}> {
|
|
42
|
+
if (this.config) {
|
|
43
|
+
return this.config;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
const knexfile = await DB.readKnexfile();
|
|
47
|
+
this.config = {
|
|
48
|
+
knexfile,
|
|
49
|
+
tdb: knex(knexfile.test),
|
|
50
|
+
fdb: knex(knexfile.fixture_local),
|
|
51
|
+
};
|
|
52
|
+
return this.config;
|
|
53
|
+
}
|
|
54
|
+
|
|
35
55
|
async cleanAndSeed() {
|
|
56
|
+
const { tdb, fdb, knexfile } = await this.init();
|
|
36
57
|
// console.time("FIXTURE-CleanAndSeed");
|
|
37
58
|
|
|
38
59
|
let tableNames: string[] = [];
|
|
39
60
|
|
|
40
61
|
if (this.usingTables === undefined) {
|
|
41
|
-
const [tables] = await
|
|
62
|
+
const [tables] = await tdb.raw(
|
|
42
63
|
"SHOW TABLE STATUS WHERE Engine IS NOT NULL"
|
|
43
64
|
);
|
|
44
65
|
tableNames = tables.map((tableInfo: any) => tableInfo["Name"]);
|
|
@@ -46,35 +67,31 @@ export class FixtureManager {
|
|
|
46
67
|
tableNames = this.usingTables;
|
|
47
68
|
}
|
|
48
69
|
|
|
49
|
-
await
|
|
50
|
-
for (let tableName of tableNames) {
|
|
70
|
+
await tdb.raw(`SET FOREIGN_KEY_CHECKS = 0`);
|
|
71
|
+
for await (let tableName of tableNames) {
|
|
51
72
|
if (tableName == "migrations") {
|
|
52
73
|
continue;
|
|
53
74
|
}
|
|
54
75
|
|
|
55
|
-
const [[fdbChecksumRow]] = await
|
|
56
|
-
`CHECKSUM TABLE ${tableName}`
|
|
57
|
-
);
|
|
76
|
+
const [[fdbChecksumRow]] = await fdb.raw(`CHECKSUM TABLE ${tableName}`);
|
|
58
77
|
const fdbChecksum = fdbChecksumRow["Checksum"];
|
|
59
78
|
|
|
60
|
-
const [[tdbChecksumRow]] = await
|
|
61
|
-
`CHECKSUM TABLE ${tableName}`
|
|
62
|
-
);
|
|
79
|
+
const [[tdbChecksumRow]] = await tdb.raw(`CHECKSUM TABLE ${tableName}`);
|
|
63
80
|
const tdbChecksum = tdbChecksumRow["Checksum"];
|
|
64
81
|
|
|
65
82
|
if (fdbChecksum !== tdbChecksum) {
|
|
66
|
-
await
|
|
83
|
+
await tdb(tableName).truncate();
|
|
67
84
|
const rawQuery = `INSERT INTO ${
|
|
68
|
-
(
|
|
85
|
+
(knexfile.test.connection as Knex.ConnectionConfig).database
|
|
69
86
|
}.${tableName}
|
|
70
87
|
SELECT * FROM ${
|
|
71
|
-
(
|
|
88
|
+
(knexfile.fixture_local.connection as Knex.ConnectionConfig)
|
|
72
89
|
.database
|
|
73
90
|
}.${tableName}`;
|
|
74
|
-
await
|
|
91
|
+
await tdb.raw(rawQuery);
|
|
75
92
|
}
|
|
76
93
|
}
|
|
77
|
-
await
|
|
94
|
+
await tdb.raw(`SET FOREIGN_KEY_CHECKS = 1`);
|
|
78
95
|
|
|
79
96
|
// console.timeEnd("FIXTURE-CleanAndSeed");
|
|
80
97
|
}
|
|
@@ -129,9 +146,10 @@ export class FixtureManager {
|
|
|
129
146
|
}
|
|
130
147
|
|
|
131
148
|
async sync() {
|
|
132
|
-
const
|
|
149
|
+
const { fdb, knexfile } = await this.init();
|
|
150
|
+
const frdb = knex(knexfile.fixture_remote);
|
|
133
151
|
|
|
134
|
-
const [tables] = await
|
|
152
|
+
const [tables] = await fdb.raw(
|
|
135
153
|
"SHOW TABLE STATUS WHERE Engine IS NOT NULL"
|
|
136
154
|
);
|
|
137
155
|
const tableNames: string[] = tables.map(
|
|
@@ -146,10 +164,10 @@ export class FixtureManager {
|
|
|
146
164
|
}
|
|
147
165
|
|
|
148
166
|
const remoteChecksum = await this.getChecksum(frdb, tableName);
|
|
149
|
-
const localChecksum = await this.getChecksum(
|
|
167
|
+
const localChecksum = await this.getChecksum(fdb, tableName);
|
|
150
168
|
|
|
151
169
|
if (remoteChecksum !== localChecksum) {
|
|
152
|
-
await
|
|
170
|
+
await fdb.transaction(async (transaction) => {
|
|
153
171
|
await transaction.raw(`SET FOREIGN_KEY_CHECKS = 0`);
|
|
154
172
|
await transaction(tableName).truncate();
|
|
155
173
|
|
|
@@ -204,6 +222,8 @@ export class FixtureManager {
|
|
|
204
222
|
field: string,
|
|
205
223
|
id: number
|
|
206
224
|
): Promise<string[]> {
|
|
225
|
+
const { knexfile } = await this.init();
|
|
226
|
+
|
|
207
227
|
console.log({ smdId, field, id });
|
|
208
228
|
const smd = SMDManager.get(smdId);
|
|
209
229
|
const wdb = BaseModel.getDB("w");
|
|
@@ -215,9 +235,9 @@ export class FixtureManager {
|
|
|
215
235
|
}
|
|
216
236
|
|
|
217
237
|
// 픽스쳐DB, 실DB
|
|
218
|
-
const fixtureDatabase = (
|
|
238
|
+
const fixtureDatabase = (knexfile.fixture_remote.connection as any)
|
|
219
239
|
.database;
|
|
220
|
-
const realDatabase = (
|
|
240
|
+
const realDatabase = (knexfile.production_master.connection as any)
|
|
221
241
|
.database;
|
|
222
242
|
|
|
223
243
|
const selfQuery = `INSERT IGNORE INTO \`${fixtureDatabase}\`.\`${smd.table}\` (SELECT * FROM \`${realDatabase}\`.\`${smd.table}\` WHERE \`id\` = ${id})`;
|
|
@@ -265,7 +285,11 @@ export class FixtureManager {
|
|
|
265
285
|
}
|
|
266
286
|
|
|
267
287
|
async destory() {
|
|
268
|
-
|
|
269
|
-
|
|
288
|
+
if (!this.config) {
|
|
289
|
+
return;
|
|
290
|
+
}
|
|
291
|
+
const { tdb, fdb } = await this.init();
|
|
292
|
+
await tdb.destroy();
|
|
293
|
+
await fdb.destroy();
|
|
270
294
|
}
|
|
271
295
|
}
|
package/src/utils/utils.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import path from "path";
|
|
2
2
|
import glob from "glob";
|
|
3
|
+
import { existsSync } from "fs";
|
|
3
4
|
|
|
4
5
|
export function globAsync(pathPattern: string): Promise<string[]> {
|
|
5
6
|
return new Promise((resolve, reject) => {
|
|
@@ -26,3 +27,16 @@ export async function importMultiple(
|
|
|
26
27
|
})
|
|
27
28
|
);
|
|
28
29
|
}
|
|
30
|
+
export async function findAppRootPath() {
|
|
31
|
+
if (require.main === undefined) {
|
|
32
|
+
throw new Error("Cannot find AppRoot using Sonamu");
|
|
33
|
+
}
|
|
34
|
+
let dir = path.dirname(require.main.path);
|
|
35
|
+
do {
|
|
36
|
+
if (existsSync(path.join(dir, "/package.json"))) {
|
|
37
|
+
return dir.split(path.sep).slice(0, -1).join(path.sep);
|
|
38
|
+
}
|
|
39
|
+
dir = dir.split(path.sep).slice(0, -1).join(path.sep);
|
|
40
|
+
} while (dir.split(path.sep).length > 1);
|
|
41
|
+
throw new Error("Cannot find AppRoot using Sonamu");
|
|
42
|
+
}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { Knex } from "knex";
|
|
2
|
-
import { DBPreset } from "./db";
|
|
3
|
-
import { ModelDefinition } from "../f9-md/model-definition";
|
|
4
|
-
import { SubsetQuery } from "../types/shared";
|
|
5
|
-
import { BaseListParams } from "../utils/model";
|
|
6
|
-
import { UpsertBuilder } from "./upsert-builder";
|
|
7
|
-
export declare class F9BaseModelClass {
|
|
8
|
-
modelName: string;
|
|
9
|
-
private _md?;
|
|
10
|
-
get md(): ModelDefinition;
|
|
11
|
-
getDB(which: DBPreset): Knex;
|
|
12
|
-
destroy(): Promise<void>;
|
|
13
|
-
myNow(timestamp?: number): string;
|
|
14
|
-
getInsertedIds(wdb: Knex, rows: any[], tableName: string, unqKeyFields: string[], chunkSize?: number): Promise<number[]>;
|
|
15
|
-
useLoaders(db: Knex, rows: any[], loaders: SubsetQuery["loaders"]): Promise<any[]>;
|
|
16
|
-
hydrate<T>(rows: T[]): T[];
|
|
17
|
-
runSubsetQuery<T extends BaseListParams, U extends string>({ params, baseTable, subset, subsetQuery, build, debug, }: {
|
|
18
|
-
subset: U;
|
|
19
|
-
params: T;
|
|
20
|
-
subsetQuery: SubsetQuery;
|
|
21
|
-
build: (buildParams: {
|
|
22
|
-
qb: Knex.QueryBuilder;
|
|
23
|
-
db: Knex;
|
|
24
|
-
select: string[];
|
|
25
|
-
joins: SubsetQuery["joins"];
|
|
26
|
-
virtual: string[];
|
|
27
|
-
}) => Knex.QueryBuilder;
|
|
28
|
-
baseTable?: string;
|
|
29
|
-
debug?: boolean | "list" | "count";
|
|
30
|
-
}): Promise<{
|
|
31
|
-
rows: any[];
|
|
32
|
-
total?: number | undefined;
|
|
33
|
-
subsetQuery: SubsetQuery;
|
|
34
|
-
}>;
|
|
35
|
-
getJoinClause(db: Knex<any, unknown>, join: SubsetQuery["joins"][number]): Knex.Raw<any>;
|
|
36
|
-
getUpsertBuilder(): UpsertBuilder;
|
|
37
|
-
}
|
|
38
|
-
export declare const F9BaseModel: F9BaseModelClass;
|
|
39
|
-
//# sourceMappingURL=f9-base-model.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"f9-base-model.d.ts","sourceRoot":"","sources":["../../src/database/f9-base-model.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAK5B,OAAO,EAAE,QAAQ,EAAQ,MAAM,MAAM,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAsB,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGhD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,qBAAa,gBAAgB;IACpB,SAAS,EAAE,MAAM,CAAa;IAGrC,OAAO,CAAC,GAAG,CAAC,CAAkB;IAC9B,IAAW,EAAE,oBAKZ;IAGD,KAAK,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAGtB,OAAO;IAIb,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM;IAQ3B,cAAc,CAClB,GAAG,EAAE,IAAI,EACT,IAAI,EAAE,GAAG,EAAE,EACX,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EAAE,EACtB,SAAS,GAAE,MAAY;IAkCnB,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,WAAW,CAAC,SAAS,CAAC;IA6DvE,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE;IAuCpB,cAAc,CAAC,CAAC,SAAS,cAAc,EAAE,CAAC,SAAS,MAAM,EAAE,EAC/D,MAAM,EACN,SAAS,EACT,MAAM,EACN,WAAW,EACX,KAAK,EACL,KAAK,GACN,EAAE;QACD,MAAM,EAAE,CAAC,CAAC;QACV,MAAM,EAAE,CAAC,CAAC;QACV,WAAW,EAAE,WAAW,CAAC;QACzB,KAAK,EAAE,CAAC,WAAW,EAAE;YACnB,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC;YACtB,EAAE,EAAE,IAAI,CAAC;YACT,MAAM,EAAE,MAAM,EAAE,CAAC;YACjB,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;YAC5B,OAAO,EAAE,MAAM,EAAE,CAAC;SACnB,KAAK,IAAI,CAAC,YAAY,CAAC;QACxB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;KACpC,GAAG,OAAO,CAAC;QACV,IAAI,EAAE,GAAG,EAAE,CAAC;QACZ,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC3B,WAAW,EAAE,WAAW,CAAC;KAC1B,CAAC;IA6EF,aAAa,CACX,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,EACtB,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,GACjC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IAQhB,gBAAgB,IAAI,aAAa;CAGlC;AACD,eAAO,MAAM,WAAW,kBAAyB,CAAC"}
|
|
@@ -1,229 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
-
};
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.F9BaseModel = exports.F9BaseModelClass = void 0;
|
|
16
|
-
const luxon_1 = require("luxon");
|
|
17
|
-
const lodash_1 = require("lodash");
|
|
18
|
-
const knex_on_duplicate_update_1 = require("./knex-plugins/knex-on-duplicate-update");
|
|
19
|
-
const f9_md_1 = require("../f9-md/f9-md");
|
|
20
|
-
(0, knex_on_duplicate_update_1.attachOnDuplicateUpdate)();
|
|
21
|
-
const db_1 = require("./db");
|
|
22
|
-
const shared_1 = require("../types/shared");
|
|
23
|
-
const inflection_1 = require("inflection");
|
|
24
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
25
|
-
const upsert_builder_1 = require("./upsert-builder");
|
|
26
|
-
class F9BaseModelClass {
|
|
27
|
-
constructor() {
|
|
28
|
-
this.modelName = "Unknown";
|
|
29
|
-
}
|
|
30
|
-
get md() {
|
|
31
|
-
if (this._md === undefined) {
|
|
32
|
-
this._md = f9_md_1.F9MD.get("Product");
|
|
33
|
-
}
|
|
34
|
-
return this._md;
|
|
35
|
-
}
|
|
36
|
-
/* F9DB 인스턴스 get, destroy */
|
|
37
|
-
getDB(which) {
|
|
38
|
-
return db_1.F9DB.getDB(which);
|
|
39
|
-
}
|
|
40
|
-
destroy() {
|
|
41
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
42
|
-
return db_1.F9DB.destroy();
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
myNow(timestamp) {
|
|
46
|
-
const dt = timestamp === undefined
|
|
47
|
-
? luxon_1.DateTime.local()
|
|
48
|
-
: luxon_1.DateTime.fromSeconds(timestamp);
|
|
49
|
-
return dt.toFormat("yyyy-MM-dd HH:mm:ss");
|
|
50
|
-
}
|
|
51
|
-
getInsertedIds(wdb, rows, tableName, unqKeyFields, chunkSize = 500) {
|
|
52
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
53
|
-
if (!wdb) {
|
|
54
|
-
wdb = this.getDB("w");
|
|
55
|
-
}
|
|
56
|
-
let unqKeys;
|
|
57
|
-
let whereInField, selectField;
|
|
58
|
-
if (unqKeyFields.length > 1) {
|
|
59
|
-
whereInField = wdb.raw(`CONCAT_WS('_', '${unqKeyFields.join(",")}')`);
|
|
60
|
-
selectField = `${whereInField} as tmpUid`;
|
|
61
|
-
unqKeys = rows.map((row) => unqKeyFields.map((field) => row[field]).join("_"));
|
|
62
|
-
}
|
|
63
|
-
else {
|
|
64
|
-
whereInField = unqKeyFields[0];
|
|
65
|
-
selectField = unqKeyFields[0];
|
|
66
|
-
unqKeys = rows.map((row) => row[unqKeyFields[0]]);
|
|
67
|
-
}
|
|
68
|
-
const chunks = (0, lodash_1.chunk)(unqKeys, chunkSize);
|
|
69
|
-
let resultIds = [];
|
|
70
|
-
for (let chunk of chunks) {
|
|
71
|
-
const dbRows = yield wdb(tableName)
|
|
72
|
-
.select("id", wdb.raw(selectField))
|
|
73
|
-
.whereIn(whereInField, chunk);
|
|
74
|
-
resultIds = resultIds.concat(dbRows.map((dbRow) => parseInt(dbRow.id)));
|
|
75
|
-
}
|
|
76
|
-
return resultIds;
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
useLoaders(db, rows, loaders) {
|
|
80
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
81
|
-
if (loaders.length > 0) {
|
|
82
|
-
for (let loader of loaders) {
|
|
83
|
-
let subQ;
|
|
84
|
-
let subRows;
|
|
85
|
-
let toCol;
|
|
86
|
-
const fromIds = rows.map((row) => row[loader.manyJoin.idField]);
|
|
87
|
-
if (loader.manyJoin.through === undefined) {
|
|
88
|
-
// HasMany
|
|
89
|
-
subQ = db(loader.manyJoin.toTable)
|
|
90
|
-
.whereIn(loader.manyJoin.toCol, fromIds)
|
|
91
|
-
.select([...loader.select, loader.manyJoin.toCol]);
|
|
92
|
-
loader.oneJoins.map((join) => {
|
|
93
|
-
if (join.join == "inner") {
|
|
94
|
-
subQ.innerJoin(`${join.table} as ${join.as}`, this.getJoinClause(db, join));
|
|
95
|
-
}
|
|
96
|
-
else if (join.join == "outer") {
|
|
97
|
-
subQ.leftOuterJoin(`${join.table} as ${join.as}`, this.getJoinClause(db, join));
|
|
98
|
-
}
|
|
99
|
-
});
|
|
100
|
-
toCol = loader.manyJoin.toCol;
|
|
101
|
-
}
|
|
102
|
-
else {
|
|
103
|
-
// ManyToMany
|
|
104
|
-
subQ = db(loader.manyJoin.through.table)
|
|
105
|
-
.join(loader.manyJoin.toTable, `${loader.manyJoin.through.table}.${loader.manyJoin.through.toCol}`, `${loader.manyJoin.toTable}.${loader.manyJoin.toCol}`)
|
|
106
|
-
.whereIn(loader.manyJoin.through.fromCol, fromIds)
|
|
107
|
-
.select((0, lodash_1.uniq)([...loader.select, loader.manyJoin.through.fromCol]));
|
|
108
|
-
toCol = loader.manyJoin.through.fromCol;
|
|
109
|
-
}
|
|
110
|
-
subRows = yield subQ;
|
|
111
|
-
if (loader.loaders) {
|
|
112
|
-
// 추가 -Many 케이스가 있는 경우 recursion 처리
|
|
113
|
-
subRows = yield this.useLoaders(db, subRows, loader.loaders);
|
|
114
|
-
}
|
|
115
|
-
// 불러온 row들을 참조ID 기준으로 분류 배치
|
|
116
|
-
const subRowGroups = (0, lodash_1.groupBy)(subRows, toCol);
|
|
117
|
-
rows = rows.map((row) => {
|
|
118
|
-
var _a;
|
|
119
|
-
row[loader.as] = ((_a = subRowGroups[row[loader.manyJoin.idField]]) !== null && _a !== void 0 ? _a : []).map((r) => (0, lodash_1.omit)(r, toCol));
|
|
120
|
-
return row;
|
|
121
|
-
});
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
return rows;
|
|
125
|
-
});
|
|
126
|
-
}
|
|
127
|
-
hydrate(rows) {
|
|
128
|
-
return rows.map((row) => {
|
|
129
|
-
// nullable relation인 경우 관련된 필드가 전부 null로 생성되는 것 방지하는 코드
|
|
130
|
-
const nestedKeys = Object.keys(row).filter((key) => key.includes("__"));
|
|
131
|
-
const groups = (0, lodash_1.groupBy)(nestedKeys, (key) => key.split("__")[0]);
|
|
132
|
-
const nullKeys = Object.keys(groups).filter((key) => groups[key].length > 1 &&
|
|
133
|
-
groups[key].every((field) => row[field] === null));
|
|
134
|
-
const hydrated = Object.keys(row).reduce((r, field) => {
|
|
135
|
-
if (!field.includes("__")) {
|
|
136
|
-
if (Array.isArray(row[field]) && (0, lodash_1.isObject)(row[field][0])) {
|
|
137
|
-
r[field] = this.hydrate(row[field]);
|
|
138
|
-
return r;
|
|
139
|
-
}
|
|
140
|
-
else {
|
|
141
|
-
r[field] = row[field];
|
|
142
|
-
return r;
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
const parts = field.split("__");
|
|
146
|
-
const objPath = parts[0] +
|
|
147
|
-
parts
|
|
148
|
-
.slice(1)
|
|
149
|
-
.map((part) => `[${part}]`)
|
|
150
|
-
.join("");
|
|
151
|
-
(0, lodash_1.set)(r, objPath, row[field]);
|
|
152
|
-
return r;
|
|
153
|
-
}, {});
|
|
154
|
-
nullKeys.map((nullKey) => (hydrated[nullKey] = null));
|
|
155
|
-
return hydrated;
|
|
156
|
-
});
|
|
157
|
-
}
|
|
158
|
-
runSubsetQuery({ params, baseTable, subset, subsetQuery, build, debug, }) {
|
|
159
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
160
|
-
const db = this.getDB(subset.startsWith("A") ? "w" : "r");
|
|
161
|
-
baseTable = baseTable !== null && baseTable !== void 0 ? baseTable : (0, inflection_1.pluralize)((0, inflection_1.underscore)(this.modelName));
|
|
162
|
-
const { select, virtual, joins, loaders } = subsetQuery;
|
|
163
|
-
const qb = build({
|
|
164
|
-
qb: db.from(baseTable),
|
|
165
|
-
db,
|
|
166
|
-
select,
|
|
167
|
-
joins,
|
|
168
|
-
virtual,
|
|
169
|
-
});
|
|
170
|
-
// join
|
|
171
|
-
joins.map((join) => {
|
|
172
|
-
if (join.join == "inner") {
|
|
173
|
-
qb.innerJoin(`${join.table} as ${join.as}`, this.getJoinClause(db, join));
|
|
174
|
-
}
|
|
175
|
-
else if (join.join == "outer") {
|
|
176
|
-
qb.leftOuterJoin(`${join.table} as ${join.as}`, this.getJoinClause(db, join));
|
|
177
|
-
}
|
|
178
|
-
});
|
|
179
|
-
// count
|
|
180
|
-
let countQuery;
|
|
181
|
-
if (params.id === undefined && params.withoutCount !== true) {
|
|
182
|
-
countQuery = qb.clone().clearOrder().count("*", { as: "total" });
|
|
183
|
-
}
|
|
184
|
-
// limit, offset
|
|
185
|
-
if (params.num !== 0) {
|
|
186
|
-
qb.limit(params.num);
|
|
187
|
-
qb.offset(params.num * (params.page - 1));
|
|
188
|
-
}
|
|
189
|
-
// select, rows
|
|
190
|
-
qb.select(select);
|
|
191
|
-
const listQuery = qb.clone();
|
|
192
|
-
// debug: listQuery
|
|
193
|
-
if (debug === true || debug === "list") {
|
|
194
|
-
console.debug("DEBUG: list query", chalk_1.default.blue(listQuery.toQuery().toString()));
|
|
195
|
-
}
|
|
196
|
-
// listQuery
|
|
197
|
-
let rows = yield listQuery;
|
|
198
|
-
rows = yield this.useLoaders(db, rows, loaders);
|
|
199
|
-
rows = this.hydrate(rows);
|
|
200
|
-
// countQuery
|
|
201
|
-
let total = 0;
|
|
202
|
-
if (countQuery) {
|
|
203
|
-
const countResult = yield countQuery;
|
|
204
|
-
if (countResult && countResult[0] && countResult[0].total) {
|
|
205
|
-
total = countResult[0].total;
|
|
206
|
-
}
|
|
207
|
-
// debug: countQuery
|
|
208
|
-
if (debug === true || debug === "count") {
|
|
209
|
-
console.debug("DEBUG: count query", chalk_1.default.blue(countQuery.toQuery().toString()));
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
return { rows, total, subsetQuery };
|
|
213
|
-
});
|
|
214
|
-
}
|
|
215
|
-
getJoinClause(db, join) {
|
|
216
|
-
if (!(0, shared_1.isCustomJoinClause)(join)) {
|
|
217
|
-
return db.raw(`${join.from} = ${join.to}`);
|
|
218
|
-
}
|
|
219
|
-
else {
|
|
220
|
-
return db.raw(join.custom);
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
getUpsertBuilder() {
|
|
224
|
-
return new upsert_builder_1.UpsertBuilder();
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
exports.F9BaseModelClass = F9BaseModelClass;
|
|
228
|
-
exports.F9BaseModel = new F9BaseModelClass();
|
|
229
|
-
//# sourceMappingURL=f9-base-model.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"f9-base-model.js","sourceRoot":"","sources":["../../src/database/f9-base-model.ts"],"names":[],"mappings":"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"}
|
package/dist/database/f9-db.d.ts
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
export declare type DBPreset = "w" | "r";
|
|
2
|
-
import { Knex } from "knex";
|
|
3
|
-
export declare type F9Knexfile = {
|
|
4
|
-
development_master: Knex.Config;
|
|
5
|
-
development_slave: Knex.Config;
|
|
6
|
-
test: Knex.Config;
|
|
7
|
-
fixture_local: Knex.Config;
|
|
8
|
-
fixture_remote: Knex.Config;
|
|
9
|
-
production_master: Knex.Config;
|
|
10
|
-
production_slave: Knex.Config;
|
|
11
|
-
};
|
|
12
|
-
declare class F9DBClass {
|
|
13
|
-
private wdb?;
|
|
14
|
-
private rdb?;
|
|
15
|
-
private knexfile?;
|
|
16
|
-
readKnexfile(): Promise<F9Knexfile>;
|
|
17
|
-
getKnexfile(): F9Knexfile;
|
|
18
|
-
getDB(which: DBPreset): Knex;
|
|
19
|
-
destroy(): Promise<void>;
|
|
20
|
-
}
|
|
21
|
-
export declare const F9DB: F9DBClass;
|
|
22
|
-
export {};
|
|
23
|
-
//# sourceMappingURL=f9-db.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"f9-db.d.ts","sourceRoot":"","sources":["../../src/database/f9-db.ts"],"names":[],"mappings":"AAAA,oBAAY,QAAQ,GAAG,GAAG,GAAG,GAAG,CAAC;AACjC,OAAa,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAKlC,oBAAY,UAAU,GAAG;IACvB,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC;IAChC,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC;IAC/B,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;IAClB,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC;IAC3B,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC;IAC5B,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC;IAC/B,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC;CAC/B,CAAC;AAEF,cAAM,SAAS;IACb,OAAO,CAAC,GAAG,CAAC,CAAO;IACnB,OAAO,CAAC,GAAG,CAAC,CAAO;IACnB,OAAO,CAAC,QAAQ,CAAC,CAAa;IAExB,YAAY;IAgBlB,WAAW,IAAI,UAAU;IAQzB,KAAK,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAmCtB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAa/B;AACD,eAAO,MAAM,IAAI,WAAkB,CAAC"}
|
package/dist/database/f9-db.js
DELETED
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
-
});
|
|
33
|
-
};
|
|
34
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
35
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
36
|
-
};
|
|
37
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
-
exports.F9DB = void 0;
|
|
39
|
-
const knex_1 = __importDefault(require("knex"));
|
|
40
|
-
const path_1 = __importDefault(require("path"));
|
|
41
|
-
const exceptions_1 = require("../exceptions");
|
|
42
|
-
const syncer_1 = require("../syncer");
|
|
43
|
-
class F9DBClass {
|
|
44
|
-
readKnexfile() {
|
|
45
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
46
|
-
const configPath = path_1.default.join(syncer_1.Syncer.getInstance().config.appRootPath, "/api/dist/configs/db");
|
|
47
|
-
try {
|
|
48
|
-
const knexfileModule = yield Promise.resolve().then(() => __importStar(require(configPath)));
|
|
49
|
-
this.knexfile = knexfileModule.default;
|
|
50
|
-
return this.knexfile;
|
|
51
|
-
}
|
|
52
|
-
catch (_a) { }
|
|
53
|
-
throw new exceptions_1.ServiceUnavailableException(`DB설정 파일을 찾을 수 없습니다. ${configPath}`);
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
getKnexfile() {
|
|
57
|
-
if (this.knexfile) {
|
|
58
|
-
return this.knexfile;
|
|
59
|
-
}
|
|
60
|
-
throw new exceptions_1.ServiceUnavailableException("DB설정 파일을 찾을 수 없습니다.");
|
|
61
|
-
}
|
|
62
|
-
getDB(which) {
|
|
63
|
-
var _a, _b, _c;
|
|
64
|
-
const knexfile = this.getKnexfile();
|
|
65
|
-
const instanceName = which === "w" ? "wdb" : "rdb";
|
|
66
|
-
if (!this[instanceName]) {
|
|
67
|
-
let config;
|
|
68
|
-
switch ((_a = process.env.NODE_ENV) !== null && _a !== void 0 ? _a : "development") {
|
|
69
|
-
case "development":
|
|
70
|
-
case "staging":
|
|
71
|
-
config =
|
|
72
|
-
which === "w"
|
|
73
|
-
? knexfile["development_master"]
|
|
74
|
-
: (_b = knexfile["development_slave"]) !== null && _b !== void 0 ? _b : knexfile["development_master"];
|
|
75
|
-
break;
|
|
76
|
-
case "production":
|
|
77
|
-
config =
|
|
78
|
-
which === "w"
|
|
79
|
-
? knexfile["production_master"]
|
|
80
|
-
: (_c = knexfile["production_slave"]) !== null && _c !== void 0 ? _c : knexfile["production_master"];
|
|
81
|
-
break;
|
|
82
|
-
case "test":
|
|
83
|
-
config = knexfile["test"];
|
|
84
|
-
break;
|
|
85
|
-
default:
|
|
86
|
-
throw new Error(`현재 ENV ${process.env.NODE_ENV}에는 설정 가능한 DB설정이 없습니다.`);
|
|
87
|
-
}
|
|
88
|
-
this[instanceName] = (0, knex_1.default)(config);
|
|
89
|
-
}
|
|
90
|
-
return this[instanceName];
|
|
91
|
-
}
|
|
92
|
-
destroy() {
|
|
93
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
94
|
-
if (this.wdb !== undefined) {
|
|
95
|
-
if (this.wdb.destroy === undefined) {
|
|
96
|
-
console.log(this.wdb);
|
|
97
|
-
}
|
|
98
|
-
yield this.wdb.destroy();
|
|
99
|
-
this.wdb = undefined;
|
|
100
|
-
}
|
|
101
|
-
if (this.rdb !== undefined) {
|
|
102
|
-
yield this.rdb.destroy();
|
|
103
|
-
this.rdb = undefined;
|
|
104
|
-
}
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
exports.F9DB = new F9DBClass();
|
|
109
|
-
//# sourceMappingURL=f9-db.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"f9-db.js","sourceRoot":"","sources":["../../src/database/f9-db.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,gDAAkC;AAClC,gDAAwB;AACxB,8CAA4D;AAC5D,sCAAmC;AAYnC,MAAM,SAAS;IAKP,YAAY;;YAChB,MAAM,UAAU,GAAW,cAAI,CAAC,IAAI,CAClC,eAAM,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,WAAW,EACvC,sBAAsB,CACvB,CAAC;YACF,IAAI;gBACF,MAAM,cAAc,GAAG,wDAAa,UAAU,GAAC,CAAC;gBAChD,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC,OAAqB,CAAC;gBACrD,OAAO,IAAI,CAAC,QAAQ,CAAC;aACtB;YAAC,WAAM,GAAE;YAEV,MAAM,IAAI,wCAA2B,CACnC,uBAAuB,UAAU,EAAE,CACpC,CAAC;QACJ,CAAC;KAAA;IAED,WAAW;QACT,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO,IAAI,CAAC,QAAQ,CAAC;SACtB;QAED,MAAM,IAAI,wCAA2B,CAAC,qBAAqB,CAAC,CAAC;IAC/D,CAAC;IAED,KAAK,CAAC,KAAe;;QACnB,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAEpC,MAAM,YAAY,GAAG,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;QAEnD,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;YACvB,IAAI,MAAmB,CAAC;YACxB,QAAQ,MAAA,OAAO,CAAC,GAAG,CAAC,QAAQ,mCAAI,aAAa,EAAE;gBAC7C,KAAK,aAAa,CAAC;gBACnB,KAAK,SAAS;oBACZ,MAAM;wBACJ,KAAK,KAAK,GAAG;4BACX,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC;4BAChC,CAAC,CAAC,MAAA,QAAQ,CAAC,mBAAmB,CAAC,mCAAI,QAAQ,CAAC,oBAAoB,CAAC,CAAC;oBACtE,MAAM;gBACR,KAAK,YAAY;oBACf,MAAM;wBACJ,KAAK,KAAK,GAAG;4BACX,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;4BAC/B,CAAC,CAAC,MAAA,QAAQ,CAAC,kBAAkB,CAAC,mCAAI,QAAQ,CAAC,mBAAmB,CAAC,CAAC;oBACpE,MAAM;gBACR,KAAK,MAAM;oBACT,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;oBAC1B,MAAM;gBACR;oBACE,MAAM,IAAI,KAAK,CACb,UAAU,OAAO,CAAC,GAAG,CAAC,QAAQ,uBAAuB,CACtD,CAAC;aACL;YACD,IAAI,CAAC,YAAY,CAAC,GAAG,IAAA,cAAI,EAAC,MAAM,CAAC,CAAC;SACnC;QAED,OAAO,IAAI,CAAC,YAAY,CAAE,CAAC;IAC7B,CAAC;IAEK,OAAO;;YACX,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,EAAE;gBAC1B,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,KAAK,SAAS,EAAE;oBAClC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;iBACvB;gBACD,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;gBACzB,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC;aACtB;YACD,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,EAAE;gBAC1B,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;gBACzB,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC;aACtB;QACH,CAAC;KAAA;CACF;AACY,QAAA,IAAI,GAAG,IAAI,SAAS,EAAE,CAAC"}
|