@ignisia/sql 0.2.0 → 0.2.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.
Files changed (156) hide show
  1. package/dist/cjs/column/constants.js +101 -0
  2. package/dist/cjs/column/index.d.cts +42 -0
  3. package/dist/cjs/column/index.js +107 -0
  4. package/dist/cjs/column/types.d.cts +43 -0
  5. package/dist/cjs/column/types.js +4 -0
  6. package/dist/cjs/database/alter.d.cts +52 -0
  7. package/dist/cjs/database/alter.js +93 -0
  8. package/dist/cjs/database/column.d.cts +24 -0
  9. package/dist/cjs/database/column.js +37 -0
  10. package/dist/cjs/database/contract.d.cts +8 -0
  11. package/dist/cjs/database/contract.js +2 -0
  12. package/dist/cjs/database/index.d.cts +8 -0
  13. package/dist/cjs/database/index.js +94 -0
  14. package/dist/cjs/database/table.d.cts +21 -0
  15. package/dist/cjs/database/table.js +41 -0
  16. package/dist/cjs/database/types.d.cts +7 -0
  17. package/dist/cjs/database/types.js +2 -0
  18. package/dist/cjs/database/wrapper.d.cts +36 -0
  19. package/dist/cjs/database/wrapper.js +95 -0
  20. package/dist/cjs/index---zaMa69.d.cts +103 -0
  21. package/dist/cjs/index-CwiFQh0I.d.cts +358 -0
  22. package/dist/cjs/index.d.cts +10 -0
  23. package/dist/cjs/index.js +30 -0
  24. package/dist/cjs/migration/index.d.cts +30 -0
  25. package/dist/cjs/migration/index.js +50 -0
  26. package/dist/cjs/migration/runner.js +58 -0
  27. package/dist/cjs/migration/type.d.cts +19 -0
  28. package/dist/cjs/migration/type.js +2 -0
  29. package/dist/cjs/package.json +3 -0
  30. package/dist/cjs/query/builder.d.cts +14 -0
  31. package/dist/cjs/query/builder.js +71 -0
  32. package/dist/cjs/query/condition.d.cts +7 -0
  33. package/dist/cjs/query/condition.js +106 -0
  34. package/dist/cjs/query/constants.js +64 -0
  35. package/dist/cjs/query/contract.d.cts +7 -0
  36. package/dist/cjs/query/contract.js +2 -0
  37. package/dist/cjs/query/helper.d.cts +7 -0
  38. package/dist/cjs/query/helper.js +36 -0
  39. package/dist/cjs/query/index.d.cts +7 -0
  40. package/dist/cjs/query/index.js +197 -0
  41. package/dist/cjs/query/join.d.cts +16 -0
  42. package/dist/cjs/query/join.js +18 -0
  43. package/dist/cjs/query/sql.d.cts +17 -0
  44. package/dist/cjs/query/sql.js +104 -0
  45. package/dist/cjs/query/types.d.cts +7 -0
  46. package/dist/cjs/query/types.js +2 -0
  47. package/dist/cjs/query/utilities.d.cts +34 -0
  48. package/dist/cjs/query/utilities.js +184 -0
  49. package/dist/cjs/table/constants.js +8 -0
  50. package/dist/cjs/table/index.d.cts +7 -0
  51. package/dist/cjs/table/index.js +54 -0
  52. package/dist/cjs/table/types.d.cts +7 -0
  53. package/dist/cjs/table/types.js +2 -0
  54. package/dist/cjs/table/utilities.d.cts +7 -0
  55. package/dist/cjs/table/utilities.js +55 -0
  56. package/dist/cjs/types.js +2 -0
  57. package/dist/cjs/utilities.js +21 -0
  58. package/dist/esm/column/constants.d.ts +97 -0
  59. package/dist/{chunk-G3LSCLIQ.js → esm/column/constants.js} +2 -7
  60. package/dist/{chunk-GY7R637S.js → esm/column/index.js} +3 -10
  61. package/dist/esm/column/types.js +1 -0
  62. package/dist/{chunk-V4OMHVJN.js → esm/database/alter.js} +2 -10
  63. package/dist/{chunk-JF7OSNH4.js → esm/database/column.js} +2 -8
  64. package/dist/esm/database/contract.js +1 -0
  65. package/dist/{chunk-UI7U54OT.js → esm/database/index.js} +7 -26
  66. package/dist/{chunk-OYM2PNYZ.js → esm/database/table.js} +2 -8
  67. package/dist/esm/database/types.js +1 -0
  68. package/dist/{chunk-HKTHKQLK.js → esm/database/wrapper.js} +6 -11
  69. package/dist/esm/index.js +5 -0
  70. package/dist/{chunk-CIWX3UCZ.js → esm/migration/index.js} +1 -3
  71. package/dist/esm/migration/runner.d.ts +3 -0
  72. package/dist/{migration → esm/migration}/runner.js +4 -16
  73. package/dist/esm/migration/type.js +1 -0
  74. package/dist/esm/query/builder.js +67 -0
  75. package/dist/esm/query/condition.js +98 -0
  76. package/dist/esm/query/constants.d.ts +63 -0
  77. package/dist/{chunk-62FKD35V.js → esm/query/constants.js} +1 -10
  78. package/dist/esm/query/contract.js +1 -0
  79. package/dist/esm/query/helper.js +31 -0
  80. package/dist/esm/query/index.js +196 -0
  81. package/dist/{chunk-FYSNJAGD.js → esm/query/join.js} +1 -3
  82. package/dist/esm/query/sql.js +100 -0
  83. package/dist/esm/query/types.js +1 -0
  84. package/dist/esm/query/utilities.js +176 -0
  85. package/dist/esm/table/constants.d.ts +7 -0
  86. package/dist/{chunk-GLOHF5CP.js → esm/table/constants.js} +1 -3
  87. package/dist/{chunk-KVCIOW7L.js → esm/table/index.js} +3 -9
  88. package/dist/esm/table/types.js +1 -0
  89. package/dist/{chunk-WVJGTZFI.js → esm/table/utilities.js} +2 -11
  90. package/dist/esm/types.d.ts +3 -0
  91. package/dist/esm/types.js +1 -0
  92. package/dist/esm/utilities.d.ts +4 -0
  93. package/dist/{chunk-Y7FSRHH3.js → esm/utilities.js} +1 -4
  94. package/package.json +62 -4
  95. package/dist/chunk-EIUC7HJS.js +0 -686
  96. package/dist/column/constants.js +0 -9
  97. package/dist/column/index.js +0 -8
  98. package/dist/column/types.js +0 -2
  99. package/dist/database/alter.js +0 -15
  100. package/dist/database/column.js +0 -11
  101. package/dist/database/contract.js +0 -0
  102. package/dist/database/index.js +0 -19
  103. package/dist/database/table.js +0 -19
  104. package/dist/database/types.js +0 -0
  105. package/dist/database/wrapper.js +0 -9
  106. package/dist/index.js +0 -32
  107. package/dist/migration/index.js +0 -6
  108. package/dist/migration/type.js +0 -0
  109. package/dist/query/builder.js +0 -16
  110. package/dist/query/condition.js +0 -24
  111. package/dist/query/constants.js +0 -20
  112. package/dist/query/contract.js +0 -0
  113. package/dist/query/helper.js +0 -18
  114. package/dist/query/index.js +0 -10
  115. package/dist/query/join.js +0 -6
  116. package/dist/query/sql.js +0 -16
  117. package/dist/query/types.js +0 -0
  118. package/dist/query/utilities.js +0 -24
  119. package/dist/table/constants.js +0 -6
  120. package/dist/table/index.js +0 -14
  121. package/dist/table/types.js +0 -0
  122. package/dist/table/utilities.js +0 -15
  123. package/dist/types.js +0 -0
  124. package/dist/utilities.js +0 -8
  125. /package/dist/{column/constants.d.ts → cjs/column/constants.d.cts} +0 -0
  126. /package/dist/{migration/runner.d.ts → cjs/migration/runner.d.cts} +0 -0
  127. /package/dist/{query/constants.d.ts → cjs/query/constants.d.cts} +0 -0
  128. /package/dist/{table/constants.d.ts → cjs/table/constants.d.cts} +0 -0
  129. /package/dist/{types.d.ts → cjs/types.d.cts} +0 -0
  130. /package/dist/{utilities.d.ts → cjs/utilities.d.cts} +0 -0
  131. /package/dist/{column → esm/column}/index.d.ts +0 -0
  132. /package/dist/{column → esm/column}/types.d.ts +0 -0
  133. /package/dist/{database → esm/database}/alter.d.ts +0 -0
  134. /package/dist/{database → esm/database}/column.d.ts +0 -0
  135. /package/dist/{database → esm/database}/contract.d.ts +0 -0
  136. /package/dist/{database → esm/database}/index.d.ts +0 -0
  137. /package/dist/{database → esm/database}/table.d.ts +0 -0
  138. /package/dist/{database → esm/database}/types.d.ts +0 -0
  139. /package/dist/{database → esm/database}/wrapper.d.ts +0 -0
  140. /package/dist/{index-DFrpzXEn.d.ts → esm/index-DFrpzXEn.d.ts} +0 -0
  141. /package/dist/{index-FMT0YEO7.d.ts → esm/index-FMT0YEO7.d.ts} +0 -0
  142. /package/dist/{index.d.ts → esm/index.d.ts} +0 -0
  143. /package/dist/{migration → esm/migration}/index.d.ts +0 -0
  144. /package/dist/{migration → esm/migration}/type.d.ts +0 -0
  145. /package/dist/{query → esm/query}/builder.d.ts +0 -0
  146. /package/dist/{query → esm/query}/condition.d.ts +0 -0
  147. /package/dist/{query → esm/query}/contract.d.ts +0 -0
  148. /package/dist/{query → esm/query}/helper.d.ts +0 -0
  149. /package/dist/{query → esm/query}/index.d.ts +0 -0
  150. /package/dist/{query → esm/query}/join.d.ts +0 -0
  151. /package/dist/{query → esm/query}/sql.d.ts +0 -0
  152. /package/dist/{query → esm/query}/types.d.ts +0 -0
  153. /package/dist/{query → esm/query}/utilities.d.ts +0 -0
  154. /package/dist/{table → esm/table}/index.d.ts +0 -0
  155. /package/dist/{table → esm/table}/types.d.ts +0 -0
  156. /package/dist/{table → esm/table}/utilities.d.ts +0 -0
@@ -0,0 +1,176 @@
1
+ import './index.js';
2
+ import { Dialect } from '../table/constants.js';
3
+ import { quoteIdentifier } from '../utilities.js';
4
+ import { AcceptedOperator, QueryType } from './constants.js';
5
+
6
+ // src/query/utilities.ts
7
+ function getTableColumnNames(column, baseAlias, baseTable, joinedTables) {
8
+ const [tableAlias] = column.split(".");
9
+ const isOnBase = tableAlias === baseAlias;
10
+ const from = isOnBase ? baseAlias : tableAlias;
11
+ const columns = isOnBase ? Object.keys(baseTable.columns) : Object.keys(joinedTables?.[from]?.columns ?? {});
12
+ return {
13
+ from,
14
+ columns
15
+ };
16
+ }
17
+ function getCondition(dialect, column, operator, value) {
18
+ switch (operator) {
19
+ case AcceptedOperator.EQ:
20
+ return `${column} = ?`;
21
+ case AcceptedOperator.NE:
22
+ return `${column} != ?`;
23
+ case AcceptedOperator.GT:
24
+ return `${column} > ?`;
25
+ case AcceptedOperator.LT:
26
+ return `${column} < ?`;
27
+ case AcceptedOperator.GTE:
28
+ return `${column} >= ?`;
29
+ case AcceptedOperator.LTE:
30
+ return `${column} <= ?`;
31
+ case AcceptedOperator.IN:
32
+ return `${column} IN (${value.map(() => "?").join(", ")})`;
33
+ case AcceptedOperator.NOT_IN:
34
+ return `${column} NOT IN (${value.map(() => "?").join(", ")})`;
35
+ case AcceptedOperator.LIKE:
36
+ return `${column} LIKE ?`;
37
+ case AcceptedOperator.NOT_LIKE:
38
+ return `${column} NOT LIKE ?`;
39
+ case AcceptedOperator.ILIKE:
40
+ if (dialect === Dialect.POSTGRES) {
41
+ return `${column} ILIKE ?`;
42
+ }
43
+ return `LOWER(${column}) LIKE LOWER(?)`;
44
+ case AcceptedOperator.NOT_ILIKE:
45
+ if (dialect === Dialect.POSTGRES) {
46
+ return `${column} NOT ILIKE ?`;
47
+ }
48
+ return `LOWER(${column}) NOT LIKE LOWER(?)`;
49
+ case AcceptedOperator.IS_NULL:
50
+ return `${column} IS NULL`;
51
+ case AcceptedOperator.IS_NOT_NULL:
52
+ return `${column} IS NOT NULL`;
53
+ case AcceptedOperator.BETWEEN:
54
+ return `${column} BETWEEN ? AND ?`;
55
+ case AcceptedOperator.NOT_BETWEEN:
56
+ return `${column} NOT BETWEEN ? AND ?`;
57
+ default:
58
+ throw new Error("Invalid operator");
59
+ }
60
+ }
61
+ function getTimestamp(table) {
62
+ const isWithTimestamp = !!table.timestamp;
63
+ const timestamp = /* @__PURE__ */ new Date();
64
+ let createdAt = "createdAt";
65
+ let updatedAt = "updatedAt";
66
+ if (isWithTimestamp) {
67
+ const isCustomTimestamp = typeof table.timestamp === "object";
68
+ if (isCustomTimestamp && table.timestamp.createdAt) {
69
+ createdAt = table.timestamp.createdAt;
70
+ }
71
+ if (isCustomTimestamp && table.timestamp.updatedAt) {
72
+ updatedAt = table.timestamp.updatedAt;
73
+ }
74
+ }
75
+ return {
76
+ isWithTimestamp,
77
+ timestamp,
78
+ createdAt,
79
+ updatedAt
80
+ };
81
+ }
82
+ function getParanoid(table) {
83
+ const isWithParanoid = !!table.paranoid;
84
+ const timestamp = /* @__PURE__ */ new Date();
85
+ let deletedAt = "deletedAt";
86
+ if (isWithParanoid) {
87
+ if (typeof table.paranoid === "string") {
88
+ deletedAt = table.paranoid;
89
+ }
90
+ }
91
+ return {
92
+ isWithParanoid,
93
+ timestamp,
94
+ deletedAt
95
+ };
96
+ }
97
+ function getWhereConditions(q) {
98
+ if (q.definition.queryType === QueryType.INSERT) return [];
99
+ const conditions = [];
100
+ const base = q.definition.baseAlias ?? q.table.name;
101
+ const { isWithParanoid, deletedAt } = getParanoid(q.table);
102
+ const withDeleted = !!q.definition.withDeleted;
103
+ const isHasConditions = !!q.definition.where?.length;
104
+ if (!withDeleted && isWithParanoid) {
105
+ const suffix = isHasConditions ? " AND" : "";
106
+ const column = `${base}.${quoteIdentifier(deletedAt)}`;
107
+ conditions.unshift(`${column} IS NULL${suffix}`);
108
+ }
109
+ if (q.definition.where?.length) {
110
+ conditions.push(...q.definition.where);
111
+ }
112
+ return conditions;
113
+ }
114
+ function getGroupByConditions(q) {
115
+ if (q.definition.queryType !== QueryType.SELECT) return [];
116
+ if (q.definition.groupBy?.length) return q.definition.groupBy;
117
+ if (q.definition.aggregates?.length) {
118
+ if (q.definition.select?.length)
119
+ return q.definition.select.map((col) => {
120
+ if (typeof col === "string" && col.endsWith("*")) {
121
+ const { from: from2, columns } = getTableColumnNames(
122
+ col,
123
+ q.definition.baseAlias ?? q.table.name,
124
+ q.table,
125
+ q.definition.joinedTables ?? {}
126
+ );
127
+ return columns.map((column) => `${from2}.${quoteIdentifier(column)}`).join(" ");
128
+ }
129
+ return col;
130
+ });
131
+ const from = q.definition.baseAlias ?? q.table.name;
132
+ return Object.keys(q.table.columns).map(
133
+ (col) => `${from}.${quoteIdentifier(col)}`
134
+ );
135
+ }
136
+ return [];
137
+ }
138
+ function getTableSelectName(q) {
139
+ if (!q.definition.baseAlias) return q.table.name;
140
+ return `${q.table.name} AS ${q.definition.baseAlias}`;
141
+ }
142
+ function parseAliasedRow({
143
+ row,
144
+ selects,
145
+ root = null
146
+ }) {
147
+ let result = {};
148
+ for (const key in row) {
149
+ const [table, column] = key.split(".");
150
+ if (!column) {
151
+ const alias = selects.find(
152
+ (s) => typeof s === "object" && s.as === table
153
+ );
154
+ if (alias) {
155
+ const [oriTab] = alias.column.split(".");
156
+ if (!result[oriTab]) result[oriTab] = {};
157
+ result[oriTab][table] = row[key];
158
+ continue;
159
+ }
160
+ result[key] = row[key];
161
+ continue;
162
+ }
163
+ if (!result[table]) result[table] = {};
164
+ result[table][column] = row[key];
165
+ }
166
+ if (root) {
167
+ result = {
168
+ ...result,
169
+ ...result[root]
170
+ };
171
+ delete result[root];
172
+ }
173
+ return result;
174
+ }
175
+
176
+ export { getCondition, getGroupByConditions, getParanoid, getTableColumnNames, getTableSelectName, getTimestamp, getWhereConditions, parseAliasedRow };
@@ -0,0 +1,7 @@
1
+ declare const Dialect: {
2
+ readonly POSTGRES: "postgres";
3
+ readonly SQLITE: "sqlite";
4
+ };
5
+ type Dialect = (typeof Dialect)[keyof typeof Dialect];
6
+
7
+ export { Dialect };
@@ -4,6 +4,4 @@ var Dialect = {
4
4
  SQLITE: "sqlite"
5
5
  };
6
6
 
7
- export {
8
- Dialect
9
- };
7
+ export { Dialect };
@@ -1,9 +1,5 @@
1
- import {
2
- QueryBuilder
3
- } from "./chunk-EIUC7HJS.js";
4
- import {
5
- defineColumns
6
- } from "./chunk-WVJGTZFI.js";
1
+ import { QueryBuilder } from '../query/index.js';
2
+ import { defineColumns } from './utilities.js';
7
3
 
8
4
  // src/table/index.ts
9
5
  var Table = class _Table {
@@ -54,6 +50,4 @@ var Table = class _Table {
54
50
  }
55
51
  };
56
52
 
57
- export {
58
- Table
59
- };
53
+ export { Table };
@@ -0,0 +1 @@
1
+
@@ -1,6 +1,4 @@
1
- import {
2
- Column
3
- } from "./chunk-GY7R637S.js";
1
+ import { Column } from '../column/index.js';
4
2
 
5
3
  // src/table/utilities.ts
6
4
  var createdAt = Column.define({
@@ -17,8 +15,6 @@ function defineColumns(options) {
17
15
  ...options.columns
18
16
  };
19
17
  const tracker = {
20
- createdAt: "createdAt",
21
- updatedAt: "updatedAt",
22
18
  deletedAt: "deletedAt"
23
19
  };
24
20
  if (options.timestamp) {
@@ -52,9 +48,4 @@ function defineColumns(options) {
52
48
  return columns;
53
49
  }
54
50
 
55
- export {
56
- createdAt,
57
- updatedAt,
58
- deletedAt,
59
- defineColumns
60
- };
51
+ export { createdAt, defineColumns, deletedAt, updatedAt };
@@ -0,0 +1,3 @@
1
+ type UnionToIntersection<U> = (U extends unknown ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
2
+
3
+ export type { UnionToIntersection };
@@ -0,0 +1 @@
1
+
@@ -0,0 +1,4 @@
1
+ declare function deepClone<T>(obj: T): T;
2
+ declare function quoteIdentifier<T extends string, U extends `"${T}"`>(identifier: T): U;
3
+
4
+ export { deepClone, quoteIdentifier };
@@ -16,7 +16,4 @@ function quoteIdentifier(identifier) {
16
16
  return `"${identifier.replace(/"/g, '""')}"`;
17
17
  }
18
18
 
19
- export {
20
- deepClone,
21
- quoteIdentifier
22
- };
19
+ export { deepClone, quoteIdentifier };
package/package.json CHANGED
@@ -1,9 +1,53 @@
1
1
  {
2
2
  "name": "@ignisia/sql",
3
- "module": "dist/index.js",
4
- "types": "./dist/index.d.ts",
5
- "version": "0.2.0",
3
+ "main": "dist/cjs/index.js",
4
+ "module": "dist/esm/index.js",
5
+ "types": "./dist/esm/index.d.ts",
6
+ "version": "0.2.2",
6
7
  "type": "module",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/esm/index.d.ts",
11
+ "import": "./dist/esm/index.js",
12
+ "require": "./dist/cjs/index.js"
13
+ },
14
+ "./*": {
15
+ "types": "./dist/esm/*.d.ts",
16
+ "import": "./dist/esm/*.js",
17
+ "require": "./dist/cjs/*.js"
18
+ },
19
+ "./**/*": {
20
+ "types": "./dist/esm/**/*.d.ts",
21
+ "import": "./dist/esm/**/*.js",
22
+ "require": "./dist/cjs/**/*.js"
23
+ },
24
+ "./package.json": "./package.json",
25
+ "./column": {
26
+ "types": "./dist/esm/column/index.d.ts",
27
+ "import": "./dist/esm/column/index.js",
28
+ "require": "./dist/cjs/column/index.js"
29
+ },
30
+ "./database": {
31
+ "types": "./dist/esm/database/index.d.ts",
32
+ "import": "./dist/esm/database/index.js",
33
+ "require": "./dist/cjs/database/index.js"
34
+ },
35
+ "./migration": {
36
+ "types": "./dist/esm/migration/index.d.ts",
37
+ "import": "./dist/esm/migration/index.js",
38
+ "require": "./dist/cjs/migration/index.js"
39
+ },
40
+ "./query": {
41
+ "types": "./dist/esm/query/index.d.ts",
42
+ "import": "./dist/esm/query/index.js",
43
+ "require": "./dist/cjs/query/index.js"
44
+ },
45
+ "./table": {
46
+ "types": "./dist/esm/table/index.d.ts",
47
+ "import": "./dist/esm/table/index.js",
48
+ "require": "./dist/cjs/table/index.js"
49
+ }
50
+ },
7
51
  "scripts": {
8
52
  "build": "bun run build.ts"
9
53
  },
@@ -16,5 +60,19 @@
16
60
  },
17
61
  "files": [
18
62
  "dist"
63
+ ],
64
+ "repository": {
65
+ "type": "git",
66
+ "url": "git+https://github.com/krsbx/aio-web.git"
67
+ },
68
+ "bugs": {
69
+ "url": "https://github.com/krsbx/aio-web/issues"
70
+ },
71
+ "keywords": [
72
+ "bun",
73
+ "sql",
74
+ "database",
75
+ "sqlite",
76
+ "postgres"
19
77
  ]
20
- }
78
+ }