@itrocks/mysql 0.1.8 → 0.2.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/cjs/mysql.d.ts +13 -14
- package/cjs/mysql.js +16 -14
- package/esm/mysql.d.ts +13 -14
- package/esm/mysql.js +11 -9
- package/package.json +1 -1
package/cjs/mysql.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { AnyObject } from '@itrocks/class-type';
|
|
2
|
-
import { KeyOf } from '@itrocks/class-type';
|
|
3
2
|
import { ObjectOrType } from '@itrocks/class-type';
|
|
4
3
|
import { Type } from '@itrocks/class-type';
|
|
5
4
|
import { ReflectProperty } from '@itrocks/reflect';
|
|
@@ -12,10 +11,10 @@ import { SearchType } from '@itrocks/storage';
|
|
|
12
11
|
import { Connection } from 'mariadb';
|
|
13
12
|
export declare const DEBUG = false;
|
|
14
13
|
interface Dependencies<QF extends object = object> {
|
|
15
|
-
applyReadTransformer: <T extends object>(record: AnyObject, property:
|
|
16
|
-
applySaveTransformer: <T extends object>(object: T, property:
|
|
17
|
-
columnOf: (property: string) => string;
|
|
18
|
-
componentOf: <T extends object>(target: T, property:
|
|
14
|
+
applyReadTransformer: <T extends object>(record: AnyObject, property: keyof T, object: T) => any;
|
|
15
|
+
applySaveTransformer: <T extends object>(object: T, property: keyof T, record: AnyObject) => any;
|
|
16
|
+
columnOf: (property: number | string | symbol) => string;
|
|
17
|
+
componentOf: <T extends object>(target: T, property: keyof T) => boolean;
|
|
19
18
|
ignoreTransformedValue: any;
|
|
20
19
|
QueryFunction: Type<QF>;
|
|
21
20
|
queryFunctionCall: (value: QF) => [any, string];
|
|
@@ -41,11 +40,11 @@ export declare class Mysql extends DataSource {
|
|
|
41
40
|
columnName<T extends object>(property: ReflectProperty<T>): string | undefined;
|
|
42
41
|
connect(): Promise<Connection>;
|
|
43
42
|
count<T extends object>(type: Type<T>, search?: SearchType<T>): Promise<number>;
|
|
44
|
-
delete<T extends object>(object: Entity<T>, property?:
|
|
45
|
-
deleteId<T extends object>(type: ObjectOrType<T>, id: any, property?:
|
|
46
|
-
deleteRelatedId<T extends Entity>(object: T, property:
|
|
43
|
+
delete<T extends object>(object: Entity<T>, property?: keyof Entity<T>): Promise<T>;
|
|
44
|
+
deleteId<T extends object>(type: ObjectOrType<T>, id: any, property?: keyof Entity<T>): Promise<void>;
|
|
45
|
+
deleteRelatedId<T extends Entity>(object: T, property: keyof T, id: Identifier): Promise<void>;
|
|
47
46
|
insert<T extends object>(object: T): Promise<Entity<T>>;
|
|
48
|
-
insertRelatedId<T extends Entity>(object: T, property:
|
|
47
|
+
insertRelatedId<T extends Entity>(object: T, property: keyof T, id: Identifier): Promise<void>;
|
|
49
48
|
propertiesToSearchSql(search: AnyObject): string;
|
|
50
49
|
propertiesToSql(object: object): string;
|
|
51
50
|
propertiesToSqlSelect<T extends object>(type: Type<T>): string;
|
|
@@ -53,16 +52,16 @@ export declare class Mysql extends DataSource {
|
|
|
53
52
|
id: Identifier;
|
|
54
53
|
}>[]>;
|
|
55
54
|
read<T extends object>(type: Type<T>, id: Identifier): Promise<Entity<T>>;
|
|
56
|
-
readCollection<T extends object, PT extends object>(object: Entity<T>, property:
|
|
55
|
+
readCollection<T extends object, PT extends object>(object: Entity<T>, property: keyof T, type?: Type<PT>): Promise<Awaited<PT & {
|
|
57
56
|
id: Identifier;
|
|
58
57
|
}>[]>;
|
|
59
|
-
readCollectionIds<T extends object, PT extends object>(object: Entity<T>, property:
|
|
58
|
+
readCollectionIds<T extends object, PT extends object>(object: Entity<T>, property: keyof T, type?: Type<PT>): Promise<Identifier[]>;
|
|
60
59
|
readMultiple<T extends object>(type: Type<T>, ids: Identifier[]): Promise<Entity<T>[]>;
|
|
61
60
|
runSerialized<T extends object>(object: MayEntity<T>, task: () => Promise<Entity<T>>): Promise<Entity<T>>;
|
|
62
61
|
save<T extends object>(object: MayEntity<T>): Promise<Entity<T>>;
|
|
63
|
-
saveCollection<T extends object>(object: Entity<T>, property:
|
|
64
|
-
saveComponents<T extends object>(object: Entity<T>, property:
|
|
65
|
-
saveLinks<T extends object>(object: Entity<T>, property:
|
|
62
|
+
saveCollection<T extends object>(object: Entity<T>, property: keyof T, value: (Identifier | MayEntity)[]): Promise<void>;
|
|
63
|
+
saveComponents<T extends object, C extends AnyObject>(object: Entity<T>, property: keyof T, components: (Identifier | MayEntity<C>)[]): Promise<void>;
|
|
64
|
+
saveLinks<T extends object>(object: Entity<T>, property: keyof T, links: (Identifier | MayEntity)[]): Promise<void>;
|
|
66
65
|
search<T extends object>(type: Type<T>, search?: SearchType<T>, options?: Options): Promise<Entity<T>[]>;
|
|
67
66
|
targetName<T extends object>(property: ReflectProperty<T>): string;
|
|
68
67
|
update<T extends object>(object: Entity<T>): Promise<Entity<T>>;
|
package/cjs/mysql.js
CHANGED
|
@@ -16,12 +16,13 @@ const sort_2 = require("@itrocks/sort");
|
|
|
16
16
|
const storage_1 = require("@itrocks/storage");
|
|
17
17
|
const storage_2 = require("@itrocks/storage");
|
|
18
18
|
const storage_3 = require("@itrocks/storage");
|
|
19
|
+
const storage_4 = require("@itrocks/storage");
|
|
19
20
|
const mariadb_1 = require("mariadb");
|
|
20
21
|
exports.DEBUG = false;
|
|
21
22
|
const depends = {
|
|
22
|
-
applyReadTransformer: (record, property) => record[property],
|
|
23
|
+
applyReadTransformer: (record, property) => record[depends.columnOf(property)],
|
|
23
24
|
applySaveTransformer: (object, property) => object[property],
|
|
24
|
-
columnOf: name => name.toLowerCase(),
|
|
25
|
+
columnOf: name => name.toString().toLowerCase(),
|
|
25
26
|
componentOf: () => false,
|
|
26
27
|
ignoreTransformedValue: Symbol('ignoreTransformedValue'),
|
|
27
28
|
QueryFunction: class {
|
|
@@ -48,6 +49,8 @@ class Mysql extends storage_1.DataSource {
|
|
|
48
49
|
this.config = config;
|
|
49
50
|
}
|
|
50
51
|
columnName(property) {
|
|
52
|
+
if (typeof property.name !== 'string')
|
|
53
|
+
throw 'No column name for non-string property';
|
|
51
54
|
const propertyType = property.type;
|
|
52
55
|
if (propertyType instanceof property_type_1.CollectionType)
|
|
53
56
|
return;
|
|
@@ -243,8 +246,8 @@ class Mysql extends storage_1.DataSource {
|
|
|
243
246
|
});
|
|
244
247
|
}
|
|
245
248
|
async saveCollection(object, property, value) {
|
|
246
|
-
if (property.endsWith('Ids')) {
|
|
247
|
-
property = property.slice(0, -3);
|
|
249
|
+
if (property.toString().endsWith('Ids')) {
|
|
250
|
+
property = property.toString().slice(0, -3);
|
|
248
251
|
}
|
|
249
252
|
return depends.componentOf(object, property)
|
|
250
253
|
? this.saveComponents(object, property, value)
|
|
@@ -257,7 +260,7 @@ class Mysql extends storage_1.DataSource {
|
|
|
257
260
|
const saved = new Array;
|
|
258
261
|
let compositeProperty;
|
|
259
262
|
for (const component of components) {
|
|
260
|
-
if (
|
|
263
|
+
if ((0, storage_2.isIdentifier)(component)) {
|
|
261
264
|
saved.push(component);
|
|
262
265
|
continue;
|
|
263
266
|
}
|
|
@@ -276,7 +279,6 @@ class Mysql extends storage_1.DataSource {
|
|
|
276
279
|
}
|
|
277
280
|
}
|
|
278
281
|
if (compositeProperty) {
|
|
279
|
-
// @ts-ignore TS2322 Don't understand this error
|
|
280
282
|
component[compositeProperty.name] = object;
|
|
281
283
|
}
|
|
282
284
|
saved.push((await this.save(component)).id);
|
|
@@ -289,7 +291,7 @@ class Mysql extends storage_1.DataSource {
|
|
|
289
291
|
componentTable = depends.storeOf(propertyType);
|
|
290
292
|
if (!componentTable) {
|
|
291
293
|
throw 'Missing @Store on type ' + propertyType.name
|
|
292
|
-
+ ' used by @Component ' + new reflect_1.ReflectClass(object).name + '.' + property;
|
|
294
|
+
+ ' used by @Component ' + new reflect_1.ReflectClass(object).name + '.' + property.toString();
|
|
293
295
|
}
|
|
294
296
|
}
|
|
295
297
|
await connection.query('DELETE FROM `' + componentTable + '` WHERE id = ?', [storedId]);
|
|
@@ -328,14 +330,14 @@ class Mysql extends storage_1.DataSource {
|
|
|
328
330
|
let limitOption = undefined;
|
|
329
331
|
let sortOption = undefined;
|
|
330
332
|
for (const option of this.options(options)) {
|
|
331
|
-
if (option ===
|
|
332
|
-
sortOption = new
|
|
333
|
+
if (option === storage_4.Sort) {
|
|
334
|
+
sortOption = new storage_4.Sort((0, sort_2.sortOf)(type));
|
|
333
335
|
}
|
|
334
|
-
if (option instanceof
|
|
336
|
+
if (option instanceof storage_3.Limit) {
|
|
335
337
|
limitOption = option;
|
|
336
338
|
}
|
|
337
|
-
if (option instanceof
|
|
338
|
-
sortOption = option.properties.length ? option : new
|
|
339
|
+
if (option instanceof storage_4.Sort) {
|
|
340
|
+
sortOption = option.properties.length ? option : new storage_4.Sort((0, sort_2.sortOf)(type));
|
|
339
341
|
}
|
|
340
342
|
}
|
|
341
343
|
const localSearch = { ...search };
|
|
@@ -363,8 +365,8 @@ class Mysql extends storage_1.DataSource {
|
|
|
363
365
|
targetName(property) {
|
|
364
366
|
const type = property.type.type;
|
|
365
367
|
return ((0, class_type_3.isAnyType)(type) && depends.storeOf(type))
|
|
366
|
-
? property.name + 'Id'
|
|
367
|
-
: property.name;
|
|
368
|
+
? property.name.toString() + 'Id'
|
|
369
|
+
: property.name.toString();
|
|
368
370
|
}
|
|
369
371
|
async update(object) {
|
|
370
372
|
const connection = this.connection ?? await this.connect();
|
package/esm/mysql.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { AnyObject } from '@itrocks/class-type';
|
|
2
|
-
import { KeyOf } from '@itrocks/class-type';
|
|
3
2
|
import { ObjectOrType } from '@itrocks/class-type';
|
|
4
3
|
import { Type } from '@itrocks/class-type';
|
|
5
4
|
import { ReflectProperty } from '@itrocks/reflect';
|
|
@@ -12,10 +11,10 @@ import { SearchType } from '@itrocks/storage';
|
|
|
12
11
|
import { Connection } from 'mariadb';
|
|
13
12
|
export declare const DEBUG = false;
|
|
14
13
|
interface Dependencies<QF extends object = object> {
|
|
15
|
-
applyReadTransformer: <T extends object>(record: AnyObject, property:
|
|
16
|
-
applySaveTransformer: <T extends object>(object: T, property:
|
|
17
|
-
columnOf: (property: string) => string;
|
|
18
|
-
componentOf: <T extends object>(target: T, property:
|
|
14
|
+
applyReadTransformer: <T extends object>(record: AnyObject, property: keyof T, object: T) => any;
|
|
15
|
+
applySaveTransformer: <T extends object>(object: T, property: keyof T, record: AnyObject) => any;
|
|
16
|
+
columnOf: (property: number | string | symbol) => string;
|
|
17
|
+
componentOf: <T extends object>(target: T, property: keyof T) => boolean;
|
|
19
18
|
ignoreTransformedValue: any;
|
|
20
19
|
QueryFunction: Type<QF>;
|
|
21
20
|
queryFunctionCall: (value: QF) => [any, string];
|
|
@@ -41,11 +40,11 @@ export declare class Mysql extends DataSource {
|
|
|
41
40
|
columnName<T extends object>(property: ReflectProperty<T>): string | undefined;
|
|
42
41
|
connect(): Promise<Connection>;
|
|
43
42
|
count<T extends object>(type: Type<T>, search?: SearchType<T>): Promise<number>;
|
|
44
|
-
delete<T extends object>(object: Entity<T>, property?:
|
|
45
|
-
deleteId<T extends object>(type: ObjectOrType<T>, id: any, property?:
|
|
46
|
-
deleteRelatedId<T extends Entity>(object: T, property:
|
|
43
|
+
delete<T extends object>(object: Entity<T>, property?: keyof Entity<T>): Promise<T>;
|
|
44
|
+
deleteId<T extends object>(type: ObjectOrType<T>, id: any, property?: keyof Entity<T>): Promise<void>;
|
|
45
|
+
deleteRelatedId<T extends Entity>(object: T, property: keyof T, id: Identifier): Promise<void>;
|
|
47
46
|
insert<T extends object>(object: T): Promise<Entity<T>>;
|
|
48
|
-
insertRelatedId<T extends Entity>(object: T, property:
|
|
47
|
+
insertRelatedId<T extends Entity>(object: T, property: keyof T, id: Identifier): Promise<void>;
|
|
49
48
|
propertiesToSearchSql(search: AnyObject): string;
|
|
50
49
|
propertiesToSql(object: object): string;
|
|
51
50
|
propertiesToSqlSelect<T extends object>(type: Type<T>): string;
|
|
@@ -53,16 +52,16 @@ export declare class Mysql extends DataSource {
|
|
|
53
52
|
id: Identifier;
|
|
54
53
|
}>[]>;
|
|
55
54
|
read<T extends object>(type: Type<T>, id: Identifier): Promise<Entity<T>>;
|
|
56
|
-
readCollection<T extends object, PT extends object>(object: Entity<T>, property:
|
|
55
|
+
readCollection<T extends object, PT extends object>(object: Entity<T>, property: keyof T, type?: Type<PT>): Promise<Awaited<PT & {
|
|
57
56
|
id: Identifier;
|
|
58
57
|
}>[]>;
|
|
59
|
-
readCollectionIds<T extends object, PT extends object>(object: Entity<T>, property:
|
|
58
|
+
readCollectionIds<T extends object, PT extends object>(object: Entity<T>, property: keyof T, type?: Type<PT>): Promise<Identifier[]>;
|
|
60
59
|
readMultiple<T extends object>(type: Type<T>, ids: Identifier[]): Promise<Entity<T>[]>;
|
|
61
60
|
runSerialized<T extends object>(object: MayEntity<T>, task: () => Promise<Entity<T>>): Promise<Entity<T>>;
|
|
62
61
|
save<T extends object>(object: MayEntity<T>): Promise<Entity<T>>;
|
|
63
|
-
saveCollection<T extends object>(object: Entity<T>, property:
|
|
64
|
-
saveComponents<T extends object>(object: Entity<T>, property:
|
|
65
|
-
saveLinks<T extends object>(object: Entity<T>, property:
|
|
62
|
+
saveCollection<T extends object>(object: Entity<T>, property: keyof T, value: (Identifier | MayEntity)[]): Promise<void>;
|
|
63
|
+
saveComponents<T extends object, C extends AnyObject>(object: Entity<T>, property: keyof T, components: (Identifier | MayEntity<C>)[]): Promise<void>;
|
|
64
|
+
saveLinks<T extends object>(object: Entity<T>, property: keyof T, links: (Identifier | MayEntity)[]): Promise<void>;
|
|
66
65
|
search<T extends object>(type: Type<T>, search?: SearchType<T>, options?: Options): Promise<Entity<T>[]>;
|
|
67
66
|
targetName<T extends object>(property: ReflectProperty<T>): string;
|
|
68
67
|
update<T extends object>(object: Entity<T>): Promise<Entity<T>>;
|
package/esm/mysql.js
CHANGED
|
@@ -9,14 +9,15 @@ import { ReflectProperty } from '@itrocks/reflect';
|
|
|
9
9
|
import { Reverse } from '@itrocks/sort';
|
|
10
10
|
import { sortOf } from '@itrocks/sort';
|
|
11
11
|
import { DataSource } from '@itrocks/storage';
|
|
12
|
+
import { isIdentifier } from '@itrocks/storage';
|
|
12
13
|
import { Limit } from '@itrocks/storage';
|
|
13
14
|
import { Sort } from '@itrocks/storage';
|
|
14
15
|
import { createConnection } from 'mariadb';
|
|
15
16
|
export const DEBUG = false;
|
|
16
17
|
const depends = {
|
|
17
|
-
applyReadTransformer: (record, property) => record[property],
|
|
18
|
+
applyReadTransformer: (record, property) => record[depends.columnOf(property)],
|
|
18
19
|
applySaveTransformer: (object, property) => object[property],
|
|
19
|
-
columnOf: name => name.toLowerCase(),
|
|
20
|
+
columnOf: name => name.toString().toLowerCase(),
|
|
20
21
|
componentOf: () => false,
|
|
21
22
|
ignoreTransformedValue: Symbol('ignoreTransformedValue'),
|
|
22
23
|
QueryFunction: class {
|
|
@@ -43,6 +44,8 @@ export class Mysql extends DataSource {
|
|
|
43
44
|
this.config = config;
|
|
44
45
|
}
|
|
45
46
|
columnName(property) {
|
|
47
|
+
if (typeof property.name !== 'string')
|
|
48
|
+
throw 'No column name for non-string property';
|
|
46
49
|
const propertyType = property.type;
|
|
47
50
|
if (propertyType instanceof CollectionType)
|
|
48
51
|
return;
|
|
@@ -238,8 +241,8 @@ export class Mysql extends DataSource {
|
|
|
238
241
|
});
|
|
239
242
|
}
|
|
240
243
|
async saveCollection(object, property, value) {
|
|
241
|
-
if (property.endsWith('Ids')) {
|
|
242
|
-
property = property.slice(0, -3);
|
|
244
|
+
if (property.toString().endsWith('Ids')) {
|
|
245
|
+
property = property.toString().slice(0, -3);
|
|
243
246
|
}
|
|
244
247
|
return depends.componentOf(object, property)
|
|
245
248
|
? this.saveComponents(object, property, value)
|
|
@@ -252,7 +255,7 @@ export class Mysql extends DataSource {
|
|
|
252
255
|
const saved = new Array;
|
|
253
256
|
let compositeProperty;
|
|
254
257
|
for (const component of components) {
|
|
255
|
-
if (
|
|
258
|
+
if (isIdentifier(component)) {
|
|
256
259
|
saved.push(component);
|
|
257
260
|
continue;
|
|
258
261
|
}
|
|
@@ -271,7 +274,6 @@ export class Mysql extends DataSource {
|
|
|
271
274
|
}
|
|
272
275
|
}
|
|
273
276
|
if (compositeProperty) {
|
|
274
|
-
// @ts-ignore TS2322 Don't understand this error
|
|
275
277
|
component[compositeProperty.name] = object;
|
|
276
278
|
}
|
|
277
279
|
saved.push((await this.save(component)).id);
|
|
@@ -284,7 +286,7 @@ export class Mysql extends DataSource {
|
|
|
284
286
|
componentTable = depends.storeOf(propertyType);
|
|
285
287
|
if (!componentTable) {
|
|
286
288
|
throw 'Missing @Store on type ' + propertyType.name
|
|
287
|
-
+ ' used by @Component ' + new ReflectClass(object).name + '.' + property;
|
|
289
|
+
+ ' used by @Component ' + new ReflectClass(object).name + '.' + property.toString();
|
|
288
290
|
}
|
|
289
291
|
}
|
|
290
292
|
await connection.query('DELETE FROM `' + componentTable + '` WHERE id = ?', [storedId]);
|
|
@@ -358,8 +360,8 @@ export class Mysql extends DataSource {
|
|
|
358
360
|
targetName(property) {
|
|
359
361
|
const type = property.type.type;
|
|
360
362
|
return (isAnyType(type) && depends.storeOf(type))
|
|
361
|
-
? property.name + 'Id'
|
|
362
|
-
: property.name;
|
|
363
|
+
? property.name.toString() + 'Id'
|
|
364
|
+
: property.name.toString();
|
|
363
365
|
}
|
|
364
366
|
async update(object) {
|
|
365
367
|
const connection = this.connection ?? await this.connect();
|
package/package.json
CHANGED