@itrocks/mysql 0.0.23 → 0.0.24

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 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, '[', 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);
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, '[', 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);
package/package.json CHANGED
@@ -59,5 +59,5 @@
59
59
  "build:esm": "tsc -p tsconfig.esm.json"
60
60
  },
61
61
  "types": "./esm/mysql.d.ts",
62
- "version": "0.0.23"
62
+ "version": "0.0.24"
63
63
  }