forge-sql-orm 2.0.8 → 2.0.9
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 +2 -3
- package/dist/ForgeSQLORM.js +23 -19
- package/dist/ForgeSQLORM.js.map +1 -1
- package/dist/ForgeSQLORM.mjs +22 -18
- package/dist/ForgeSQLORM.mjs.map +1 -1
- package/dist/core/ForgeSQLORM.d.ts +4 -4
- package/dist/core/ForgeSQLORM.d.ts.map +1 -1
- package/dist/core/ForgeSQLQueryBuilder.d.ts +4 -5
- package/dist/core/ForgeSQLQueryBuilder.d.ts.map +1 -1
- package/dist/utils/forgeDriver.d.ts +5 -2
- package/dist/utils/forgeDriver.d.ts.map +1 -1
- package/dist-cli/cli.js.map +1 -1
- package/dist-cli/cli.mjs.map +1 -1
- package/package.json +1 -1
- package/src/core/ForgeSQLORM.ts +10 -10
- package/src/core/ForgeSQLQueryBuilder.ts +4 -5
- package/src/utils/forgeDriver.ts +28 -17
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { UpdateQueryResponse } from "@forge/sql";
|
|
2
2
|
import { SqlParameters } from "@forge/sql/out/sql-statement";
|
|
3
|
-
import { MySql2Database } from "drizzle-orm/mysql2/driver";
|
|
4
3
|
import {
|
|
5
4
|
AnyMySqlSelectQueryBuilder,
|
|
6
5
|
AnyMySqlTable,
|
|
@@ -14,7 +13,7 @@ import {
|
|
|
14
13
|
import { InferInsertModel, SQL } from "drizzle-orm";
|
|
15
14
|
import moment from "moment/moment";
|
|
16
15
|
import { parseDateTime } from "../utils/sqlUtils";
|
|
17
|
-
import {
|
|
16
|
+
import { MySqlRemoteDatabase, MySqlRemotePreparedQueryHKT } from "drizzle-orm/mysql-proxy/index";
|
|
18
17
|
|
|
19
18
|
// ============= Core Types =============
|
|
20
19
|
|
|
@@ -45,15 +44,15 @@ export interface QueryBuilderForgeSql {
|
|
|
45
44
|
* Creates a new query builder for the given entity.
|
|
46
45
|
* @returns {MySql2Database<Record<string, unknown>>} The Drizzle database instance for building queries
|
|
47
46
|
*/
|
|
48
|
-
getDrizzleQueryBuilder():
|
|
47
|
+
getDrizzleQueryBuilder(): MySqlRemoteDatabase<Record<string, unknown>>;
|
|
49
48
|
|
|
50
49
|
select<TSelection extends SelectedFields>(
|
|
51
50
|
fields: TSelection,
|
|
52
|
-
): MySqlSelectBuilder<TSelection,
|
|
51
|
+
): MySqlSelectBuilder<TSelection, MySqlRemotePreparedQueryHKT>;
|
|
53
52
|
|
|
54
53
|
selectDistinct<TSelection extends SelectedFields>(
|
|
55
54
|
fields: TSelection,
|
|
56
|
-
): MySqlSelectBuilder<TSelection,
|
|
55
|
+
): MySqlSelectBuilder<TSelection, MySqlRemotePreparedQueryHKT>;
|
|
57
56
|
}
|
|
58
57
|
|
|
59
58
|
// ============= CRUD Operations =============
|
package/src/utils/forgeDriver.ts
CHANGED
|
@@ -1,28 +1,39 @@
|
|
|
1
|
-
import { sql } from "@forge/sql";
|
|
2
|
-
import { AnyMySql2Connection } from "drizzle-orm/mysql2/driver";
|
|
1
|
+
import { sql, UpdateQueryResponse } from "@forge/sql";
|
|
3
2
|
|
|
4
3
|
interface ForgeSQLResult {
|
|
5
4
|
rows: Record<string, unknown>[] | Record<string, unknown>;
|
|
6
5
|
}
|
|
7
6
|
|
|
8
|
-
export const forgeDriver =
|
|
9
|
-
query:
|
|
10
|
-
|
|
11
|
-
|
|
7
|
+
export const forgeDriver = async (
|
|
8
|
+
query: string,
|
|
9
|
+
params: any[],
|
|
10
|
+
method: "all" | "execute",
|
|
11
|
+
): Promise<{
|
|
12
|
+
rows: any[];
|
|
13
|
+
insertId?: number;
|
|
14
|
+
affectedRows?: number;
|
|
15
|
+
}> => {
|
|
16
|
+
try {
|
|
17
|
+
if (method == "execute") {
|
|
18
|
+
const sqlStatement = sql.prepare<UpdateQueryResponse>(query);
|
|
19
|
+
if (params) {
|
|
20
|
+
sqlStatement.bindParams(...params);
|
|
21
|
+
}
|
|
22
|
+
const updateQueryResponseResults = await sqlStatement.execute();
|
|
23
|
+
let result = updateQueryResponseResults.rows as any;
|
|
24
|
+
return { ...result, rows: [result] };
|
|
25
|
+
} else {
|
|
26
|
+
const sqlStatement = await sql.prepare<unknown>(query);
|
|
12
27
|
if (params) {
|
|
13
28
|
await sqlStatement.bindParams(...params);
|
|
14
29
|
}
|
|
15
30
|
const result = (await sqlStatement.execute()) as ForgeSQLResult;
|
|
16
31
|
let rows;
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
} else {
|
|
20
|
-
rows = [result.rows as Record<string, unknown>];
|
|
21
|
-
}
|
|
22
|
-
return rows;
|
|
23
|
-
} catch (error) {
|
|
24
|
-
console.error("SQL Error:", JSON.stringify(error));
|
|
25
|
-
throw error;
|
|
32
|
+
rows = (result.rows as any[]).map((r) => Object.values(r as Record<string, unknown>));
|
|
33
|
+
return { rows: rows };
|
|
26
34
|
}
|
|
27
|
-
}
|
|
28
|
-
|
|
35
|
+
} catch (error) {
|
|
36
|
+
console.error("SQL Error:", JSON.stringify(error));
|
|
37
|
+
throw error;
|
|
38
|
+
}
|
|
39
|
+
};
|