@itrocks/mysql 0.0.23 → 0.0.26
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 +1 -0
- package/cjs/mysql.js +16 -2
- package/esm/mysql.d.ts +1 -0
- package/esm/mysql.js +16 -2
- package/package.json +1 -1
package/cjs/mysql.d.ts
CHANGED
|
@@ -38,6 +38,7 @@ export declare class Mysql extends DataSource {
|
|
|
38
38
|
database: string;
|
|
39
39
|
});
|
|
40
40
|
connect(): Promise<Connection>;
|
|
41
|
+
count<T extends object>(type: Type<T>, search?: SearchType<T>): Promise<number>;
|
|
41
42
|
delete<T extends object>(object: Entity<T>, property?: KeyOf<Entity<T>>): Promise<T>;
|
|
42
43
|
deleteId<T extends object>(type: ObjectOrType<T>, id: any, property?: KeyOf<Entity<T>>): Promise<void>;
|
|
43
44
|
deleteRelatedId<T extends Entity>(object: T, property: KeyOf<T>, id: Identifier): Promise<void>;
|
package/cjs/mysql.js
CHANGED
|
@@ -54,6 +54,16 @@ class Mysql extends storage_1.DataSource {
|
|
|
54
54
|
});
|
|
55
55
|
return this.connection = await (0, mariadb_1.createConnection)(mariaDbConfig);
|
|
56
56
|
}
|
|
57
|
+
async count(type, search = {}) {
|
|
58
|
+
const connection = this.connection ?? await this.connect();
|
|
59
|
+
Object.setPrototypeOf(search, type.prototype);
|
|
60
|
+
const sql = this.propertiesToSearchSql(search);
|
|
61
|
+
const [values] = await this.valuesToDb(search);
|
|
62
|
+
if (exports.DEBUG)
|
|
63
|
+
console.log('SELECT COUNT(*) FROM `' + depends.storeOf(type) + '`' + sql, JSON.stringify(values));
|
|
64
|
+
const row = (await connection.query('SELECT COUNT(*) `count` FROM `' + depends.storeOf(type) + '`' + sql, Object.values(values)))[0];
|
|
65
|
+
return row?.count;
|
|
66
|
+
}
|
|
57
67
|
async delete(object, property = 'id') {
|
|
58
68
|
await this.deleteId(object, object[property], property);
|
|
59
69
|
return this.disconnectObject(object);
|
|
@@ -112,11 +122,15 @@ class Mysql extends storage_1.DataSource {
|
|
|
112
122
|
.map(([name, value]) => {
|
|
113
123
|
let sql;
|
|
114
124
|
if (value instanceof depends.QueryFunction) {
|
|
115
|
-
[
|
|
125
|
+
[value, sql] = depends.queryFunctionCall(value);
|
|
126
|
+
search[name] = value;
|
|
116
127
|
}
|
|
117
128
|
else {
|
|
118
129
|
sql = ' = ?';
|
|
119
130
|
}
|
|
131
|
+
if ((typeof value)[0] === 'o') {
|
|
132
|
+
name = Array.isArray(value) ? 'id' : (name + '_id');
|
|
133
|
+
}
|
|
120
134
|
return '`' + depends.columnOf(name) + '`' + sql;
|
|
121
135
|
})
|
|
122
136
|
.join(' AND ');
|
|
@@ -315,7 +329,7 @@ class Mysql extends storage_1.DataSource {
|
|
|
315
329
|
const sql = this.propertiesToSearchSql(search);
|
|
316
330
|
const [values] = await this.valuesToDb(search);
|
|
317
331
|
if (exports.DEBUG)
|
|
318
|
-
console.log('SELECT ' + propertiesSql + ' FROM `' + depends.storeOf(type) + '`' + sql,
|
|
332
|
+
console.log('SELECT ' + propertiesSql + ' FROM `' + depends.storeOf(type) + '`' + sql, JSON.stringify(values));
|
|
319
333
|
const limit = limitOption?.limit ? ' LIMIT ' + limitOption.limit : '';
|
|
320
334
|
const offset = limitOption?.offset ? ' OFFSET ' + limitOption.offset : '';
|
|
321
335
|
const sort = sortOption?.properties.length
|
package/esm/mysql.d.ts
CHANGED
|
@@ -38,6 +38,7 @@ export declare class Mysql extends DataSource {
|
|
|
38
38
|
database: string;
|
|
39
39
|
});
|
|
40
40
|
connect(): Promise<Connection>;
|
|
41
|
+
count<T extends object>(type: Type<T>, search?: SearchType<T>): Promise<number>;
|
|
41
42
|
delete<T extends object>(object: Entity<T>, property?: KeyOf<Entity<T>>): Promise<T>;
|
|
42
43
|
deleteId<T extends object>(type: ObjectOrType<T>, id: any, property?: KeyOf<Entity<T>>): Promise<void>;
|
|
43
44
|
deleteRelatedId<T extends Entity>(object: T, property: KeyOf<T>, id: Identifier): Promise<void>;
|
package/esm/mysql.js
CHANGED
|
@@ -49,6 +49,16 @@ export class Mysql extends DataSource {
|
|
|
49
49
|
});
|
|
50
50
|
return this.connection = await createConnection(mariaDbConfig);
|
|
51
51
|
}
|
|
52
|
+
async count(type, search = {}) {
|
|
53
|
+
const connection = this.connection ?? await this.connect();
|
|
54
|
+
Object.setPrototypeOf(search, type.prototype);
|
|
55
|
+
const sql = this.propertiesToSearchSql(search);
|
|
56
|
+
const [values] = await this.valuesToDb(search);
|
|
57
|
+
if (DEBUG)
|
|
58
|
+
console.log('SELECT COUNT(*) FROM `' + depends.storeOf(type) + '`' + sql, JSON.stringify(values));
|
|
59
|
+
const row = (await connection.query('SELECT COUNT(*) `count` FROM `' + depends.storeOf(type) + '`' + sql, Object.values(values)))[0];
|
|
60
|
+
return row?.count;
|
|
61
|
+
}
|
|
52
62
|
async delete(object, property = 'id') {
|
|
53
63
|
await this.deleteId(object, object[property], property);
|
|
54
64
|
return this.disconnectObject(object);
|
|
@@ -107,11 +117,15 @@ export class Mysql extends DataSource {
|
|
|
107
117
|
.map(([name, value]) => {
|
|
108
118
|
let sql;
|
|
109
119
|
if (value instanceof depends.QueryFunction) {
|
|
110
|
-
[
|
|
120
|
+
[value, sql] = depends.queryFunctionCall(value);
|
|
121
|
+
search[name] = value;
|
|
111
122
|
}
|
|
112
123
|
else {
|
|
113
124
|
sql = ' = ?';
|
|
114
125
|
}
|
|
126
|
+
if ((typeof value)[0] === 'o') {
|
|
127
|
+
name = Array.isArray(value) ? 'id' : (name + '_id');
|
|
128
|
+
}
|
|
115
129
|
return '`' + depends.columnOf(name) + '`' + sql;
|
|
116
130
|
})
|
|
117
131
|
.join(' AND ');
|
|
@@ -310,7 +324,7 @@ export class Mysql extends DataSource {
|
|
|
310
324
|
const sql = this.propertiesToSearchSql(search);
|
|
311
325
|
const [values] = await this.valuesToDb(search);
|
|
312
326
|
if (DEBUG)
|
|
313
|
-
console.log('SELECT ' + propertiesSql + ' FROM `' + depends.storeOf(type) + '`' + sql,
|
|
327
|
+
console.log('SELECT ' + propertiesSql + ' FROM `' + depends.storeOf(type) + '`' + sql, JSON.stringify(values));
|
|
314
328
|
const limit = limitOption?.limit ? ' LIMIT ' + limitOption.limit : '';
|
|
315
329
|
const offset = limitOption?.offset ? ' OFFSET ' + limitOption.offset : '';
|
|
316
330
|
const sort = sortOption?.properties.length
|
package/package.json
CHANGED