@zeruxjs/db-mysql 0.0.1 → 0.0.2

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/README.md CHANGED
@@ -9,3 +9,7 @@ await mysql.disconnect();
9
9
  ```
10
10
 
11
11
  Accepts injected `client`, `pool`, or `executor`. MySQL2-style `[rows, fields]` tuples are unwrapped before result normalization, avoiding falsely treating metadata as data rows. The adapter tracks whether it created the pool and never closes an externally owned pool. SQL statements are built by `@zeruxjs/db-sql-core` with placeholders rather than interpolating values. SQL DDL and multi-operation pipelines are not automatically atomic; use the underlying client for transactions and migrations.
12
+
13
+ ## Release 0.0.2
14
+
15
+ Prepared to validate npm trusted publishing through GitHub Actions.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zeruxjs/db-mysql",
3
- "version": "0.0.1",
3
+ "version": "0.0.2",
4
4
  "description": "Helper for @zerux/db for MySQL Database.",
5
5
  "homepage": "https://github.com/zeruxjs/zeruxjs#readme",
6
6
  "bugs": {
@@ -20,8 +20,8 @@
20
20
  "prepack": "npm run build"
21
21
  },
22
22
  "dependencies": {
23
- "@zeruxjs/db": "0.0.1",
24
- "@zeruxjs/db-sql-core": "0.0.1",
23
+ "@zeruxjs/db": "0.0.2",
24
+ "@zeruxjs/db-sql-core": "0.0.2",
25
25
  "mysql2": "^3.24.6"
26
26
  },
27
27
  "keywords": [
@@ -1,20 +0,0 @@
1
- import type { DbConnector, DbOperation, DbResponse } from '../../db/src/types.js';
2
- export declare class MySQLConnector implements DbConnector {
3
- private options;
4
- constructor(options: any);
5
- execute(operation: DbOperation): Promise<DbResponse>;
6
- transaction(operations: DbOperation[]): Promise<DbResponse[]>;
7
- close(): Promise<void>;
8
- private translate;
9
- private translateSelect;
10
- private translateColumn;
11
- private mapFunction;
12
- private translateValue;
13
- private translateWhere;
14
- private translateInsert;
15
- private translateUpdate;
16
- private translateDelete;
17
- private translateCreateTable;
18
- }
19
- export default MySQLConnector;
20
- export { MySQLConnector as Connector };
package/dist/src/index.js DELETED
@@ -1,231 +0,0 @@
1
- export class MySQLConnector {
2
- options;
3
- constructor(options) {
4
- this.options = options;
5
- }
6
- async execute(operation) {
7
- try {
8
- const { sql, values } = this.translate(operation);
9
- // In a real implementation, you would use a mysql client here
10
- // const [rows] = await this.pool.execute(sql, values);
11
- console.log('Executing MySQL SQL:', sql, 'with values:', values);
12
- return { success: true, data: [] };
13
- }
14
- catch (error) {
15
- return {
16
- success: false,
17
- error: {
18
- code: 'MYSQL_ERROR',
19
- message: error.message
20
- }
21
- };
22
- }
23
- }
24
- async transaction(operations) {
25
- // Transaction logic here
26
- const results = [];
27
- for (const op of operations) {
28
- results.push(await this.execute(op));
29
- }
30
- return results;
31
- }
32
- async close() {
33
- // Close pool
34
- }
35
- translate(operation) {
36
- switch (operation.type) {
37
- case 'select': return this.translateSelect(operation);
38
- case 'insert': return this.translateInsert(operation);
39
- case 'update': return this.translateUpdate(operation);
40
- case 'delete': return this.translateDelete(operation);
41
- case 'createTable': return this.translateCreateTable(operation);
42
- // ... handle other operations
43
- default: throw new Error(`Unsupported operation type: ${operation.type}`);
44
- }
45
- }
46
- translateSelect(op) {
47
- let sql = 'SELECT ';
48
- const values = [];
49
- if (op.distinct)
50
- sql += 'DISTINCT ';
51
- if (op.columns) {
52
- sql += op.columns.map((col) => this.translateColumn(col)).join(', ');
53
- }
54
- else {
55
- sql += '*';
56
- }
57
- sql += ` FROM \`${op.table}\``;
58
- if (op.as)
59
- sql += ` AS \`${op.as}\``;
60
- if (op.joins) {
61
- for (const join of op.joins) {
62
- sql += ` ${join.type?.toUpperCase() || 'INNER'} JOIN \`${join.table}\``;
63
- if (join.as)
64
- sql += ` AS \`${join.as}\``;
65
- sql += ` ON ${join.on[0]} = ${join.on[1]}`;
66
- }
67
- }
68
- if (op.where) {
69
- const { sql: whereSql, values: whereValues } = this.translateWhere(op.where);
70
- sql += ` WHERE ${whereSql}`;
71
- values.push(...whereValues);
72
- }
73
- if (op.groupBy) {
74
- sql += ` GROUP BY ${op.groupBy.map((c) => `\`${c}\``).join(', ')}`;
75
- }
76
- if (op.having) {
77
- const { sql: havingSql, values: havingValues } = this.translateWhere(op.having);
78
- sql += ` HAVING ${havingSql}`;
79
- values.push(...havingValues);
80
- }
81
- if (op.orderBy) {
82
- sql += ` ORDER BY ${op.orderBy.map((o) => `\`${o.column}\` ${o.direction || 'ASC'}`).join(', ')}`;
83
- }
84
- if (op.limit) {
85
- sql += ' LIMIT ?';
86
- values.push(op.limit);
87
- }
88
- if (op.offset) {
89
- sql += ' OFFSET ?';
90
- values.push(op.offset);
91
- }
92
- return { sql, values };
93
- }
94
- translateColumn(col) {
95
- if (typeof col === 'string')
96
- return `\`${col}\``;
97
- // Map functions
98
- const name = this.mapFunction(col.name);
99
- const args = col.args ? col.args.map((arg) => this.translateValue(arg)).join(', ') : '';
100
- let sql = `${name}(${args})`;
101
- if (col.as)
102
- sql += ` AS \`${col.as}\``;
103
- return sql;
104
- }
105
- mapFunction(name) {
106
- const mapping = {
107
- 'LEN': 'CHAR_LENGTH',
108
- 'NOW': 'NOW',
109
- 'CONCAT': 'CONCAT',
110
- 'LOWER': 'LOWER',
111
- 'UPPER': 'UPPER'
112
- };
113
- return mapping[name] || name;
114
- }
115
- translateValue(value) {
116
- if (typeof value === 'string')
117
- return `'${value}'`;
118
- return String(value);
119
- }
120
- translateWhere(where) {
121
- if ('and' in where || 'or' in where || 'not' in where) {
122
- const group = where;
123
- if (group.and) {
124
- const parts = group.and.map((w) => this.translateWhere(w));
125
- return {
126
- sql: `(${parts.map((p) => p.sql).join(' AND ')})`,
127
- values: parts.flatMap((p) => p.values)
128
- };
129
- }
130
- if (group.or) {
131
- const parts = group.or.map((w) => this.translateWhere(w));
132
- return {
133
- sql: `(${parts.map((p) => p.sql).join(' OR ')})`,
134
- values: parts.flatMap((p) => p.values)
135
- };
136
- }
137
- if (group.not) {
138
- const part = this.translateWhere(group.not);
139
- return {
140
- sql: `NOT (${part.sql})`,
141
- values: part.values
142
- };
143
- }
144
- }
145
- const cond = where;
146
- const operatorMap = {
147
- eq: '=', neq: '!=', gt: '>', gte: '>=', lt: '<', lte: '<=',
148
- like: 'LIKE', ilike: 'LIKE', in: 'IN', nin: 'NOT IN',
149
- between: 'BETWEEN', nbetween: 'NOT BETWEEN',
150
- isNull: 'IS NULL', isNotNull: 'IS NOT NULL'
151
- };
152
- let sql = `\`${cond.column}\` ${operatorMap[cond.operator]}`;
153
- const values = [];
154
- if (cond.operator === 'in' || cond.operator === 'nin') {
155
- sql += ` (${cond.value.map(() => '?').join(', ')})`;
156
- values.push(...cond.value);
157
- }
158
- else if (cond.operator === 'between' || cond.operator === 'nbetween') {
159
- sql += ' ? AND ?';
160
- values.push(cond.value[0], cond.value[1]);
161
- }
162
- else if (cond.operator !== 'isNull' && cond.operator !== 'isNotNull') {
163
- sql += ' ?';
164
- values.push(cond.value);
165
- }
166
- return { sql, values };
167
- }
168
- translateInsert(op) {
169
- const data = Array.isArray(op.data) ? op.data : [op.data];
170
- if (data.length === 0)
171
- throw new Error('No data to insert');
172
- const columns = Object.keys(data[0]);
173
- let sql = `INSERT INTO \`${op.table}\` (\`${columns.join('`, `')}\`) VALUES `;
174
- const placeholders = [];
175
- const values = [];
176
- for (const row of data) {
177
- placeholders.push(`(${columns.map(() => '?').join(', ')})`);
178
- values.push(...columns.map(col => row[col]));
179
- }
180
- sql += placeholders.join(', ');
181
- return { sql, values };
182
- }
183
- translateUpdate(op) {
184
- const columns = Object.keys(op.data);
185
- let sql = `UPDATE \`${op.table}\` SET ${columns.map(col => `\`${col}\` = ?`).join(', ')}`;
186
- const values = columns.map(col => op.data[col]);
187
- if (op.where) {
188
- const { sql: whereSql, values: whereValues } = this.translateWhere(op.where);
189
- sql += ` WHERE ${whereSql}`;
190
- values.push(...whereValues);
191
- }
192
- return { sql, values };
193
- }
194
- translateDelete(op) {
195
- let sql = `DELETE FROM \`${op.table}\``;
196
- const values = [];
197
- if (op.where) {
198
- const { sql: whereSql, values: whereValues } = this.translateWhere(op.where);
199
- sql += ` WHERE ${whereSql}`;
200
- values.push(...whereValues);
201
- }
202
- return { sql, values };
203
- }
204
- translateCreateTable(op) {
205
- let sql = `CREATE TABLE ${op.ifNotExists ? 'IF NOT EXISTS ' : ''}\`${op.table}\` (\n`;
206
- const defs = op.columns.map((col) => {
207
- let def = ` \`${col.name}\` ${col.type}`;
208
- if (col.primary)
209
- def += ' PRIMARY KEY';
210
- if (col.autoIncrement)
211
- def += ' AUTO_INCREMENT';
212
- if (col.unique)
213
- def += ' UNIQUE';
214
- if (col.nullable === false)
215
- def += ' NOT NULL';
216
- if (col.default !== undefined) {
217
- def += ` DEFAULT ${this.translateValue(col.default)}`;
218
- }
219
- if (col.references) {
220
- def += `, FOREIGN KEY (\`${col.name}\`) REFERENCES \`${col.references.table}\`(\`${col.references.column}\`)`;
221
- }
222
- return def;
223
- });
224
- sql += defs.join(',\n');
225
- sql += '\n)';
226
- return { sql, values: [] };
227
- }
228
- }
229
- export default MySQLConnector;
230
- export { MySQLConnector as Connector };
231
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}