@ignisia/sql 0.1.0 → 0.2.1

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 (72) hide show
  1. package/README.md +8 -8
  2. package/dist/column/constants.js +97 -8
  3. package/dist/column/index.js +105 -8
  4. package/dist/column/types.js +1 -2
  5. package/dist/database/alter.d.ts +3 -3
  6. package/dist/database/alter.js +87 -15
  7. package/dist/database/column.d.ts +3 -3
  8. package/dist/database/column.js +33 -11
  9. package/dist/database/contract.d.ts +3 -3
  10. package/dist/database/contract.js +1 -0
  11. package/dist/database/index.d.ts +3 -3
  12. package/dist/database/index.js +92 -19
  13. package/dist/database/table.d.ts +3 -3
  14. package/dist/database/table.js +37 -19
  15. package/dist/database/types.d.ts +1 -1
  16. package/dist/database/types.js +1 -0
  17. package/dist/database/wrapper.d.ts +1 -1
  18. package/dist/database/wrapper.js +92 -9
  19. package/dist/{index-Dcm5xIpR.d.ts → index-DFrpzXEn.d.ts} +5 -1
  20. package/dist/{index-DJhQVUY3.d.ts → index-FMT0YEO7.d.ts} +17 -3
  21. package/dist/index.d.ts +3 -3
  22. package/dist/index.js +5 -32
  23. package/dist/migration/index.d.ts +3 -3
  24. package/dist/migration/index.js +48 -6
  25. package/dist/migration/runner.js +8 -21
  26. package/dist/migration/type.d.ts +3 -3
  27. package/dist/migration/type.js +1 -0
  28. package/dist/query/builder.d.ts +1 -1
  29. package/dist/query/builder.js +66 -16
  30. package/dist/query/condition.d.ts +1 -1
  31. package/dist/query/condition.js +97 -24
  32. package/dist/query/constants.d.ts +6 -1
  33. package/dist/query/constants.js +54 -17
  34. package/dist/query/contract.d.ts +1 -1
  35. package/dist/query/contract.js +1 -0
  36. package/dist/query/helper.d.ts +1 -1
  37. package/dist/query/helper.js +30 -18
  38. package/dist/query/index.d.ts +1 -1
  39. package/dist/query/index.js +195 -10
  40. package/dist/query/join.d.ts +1 -1
  41. package/dist/query/join.js +16 -6
  42. package/dist/query/sql.d.ts +1 -1
  43. package/dist/query/sql.js +99 -16
  44. package/dist/query/types.d.ts +1 -1
  45. package/dist/query/types.js +1 -0
  46. package/dist/query/utilities.d.ts +1 -1
  47. package/dist/query/utilities.js +175 -24
  48. package/dist/table/constants.js +5 -5
  49. package/dist/table/index.d.ts +1 -1
  50. package/dist/table/index.js +52 -14
  51. package/dist/table/types.d.ts +1 -1
  52. package/dist/table/types.js +1 -0
  53. package/dist/table/utilities.d.ts +1 -1
  54. package/dist/table/utilities.js +50 -15
  55. package/dist/types.js +1 -0
  56. package/dist/utilities.js +18 -8
  57. package/package.json +37 -2
  58. package/dist/chunk-4DQRB5XS.js +0 -94
  59. package/dist/chunk-CIWX3UCZ.js +0 -51
  60. package/dist/chunk-D2ASIT4Q.js +0 -44
  61. package/dist/chunk-FYSNJAGD.js +0 -19
  62. package/dist/chunk-G3LSCLIQ.js +0 -104
  63. package/dist/chunk-GLOHF5CP.js +0 -9
  64. package/dist/chunk-GY7R637S.js +0 -113
  65. package/dist/chunk-HKTHKQLK.js +0 -98
  66. package/dist/chunk-JF7OSNH4.js +0 -40
  67. package/dist/chunk-MG2S4V4N.js +0 -60
  68. package/dist/chunk-TQ2GXAE7.js +0 -663
  69. package/dist/chunk-V4OMHVJN.js +0 -96
  70. package/dist/chunk-W2DR3ZVK.js +0 -59
  71. package/dist/chunk-WVJGTZFI.js +0 -60
  72. package/dist/chunk-Y7FSRHH3.js +0 -22
@@ -1,104 +0,0 @@
1
- import {
2
- Dialect
3
- } from "./chunk-GLOHF5CP.js";
4
-
5
- // src/column/constants.ts
6
- var AcceptedColumnTypes = {
7
- INTEGER: "INTEGER",
8
- STRING: "STRING",
9
- BOOLEAN: "BOOLEAN",
10
- DATE: "DATE",
11
- FLOAT: "FLOAT",
12
- DECIMAL: "DECIMAL",
13
- BIGINT: "BIGINT",
14
- TEXT: "TEXT",
15
- BLOB: "BLOB",
16
- JSON: "JSON",
17
- VARCHAR: "VARCHAR",
18
- TIME: "TIME",
19
- TIMESTAMP: "TIMESTAMP",
20
- DOUBLE: "DOUBLE",
21
- DATETIME: "DATETIME",
22
- DATEONLY: "DATEONLY",
23
- ENUM: "ENUM",
24
- SERIAL: "SERIAL"
25
- };
26
- var ColumnTypeMapping = {
27
- [AcceptedColumnTypes.INTEGER]: {
28
- [Dialect.SQLITE]: "INTEGER",
29
- [Dialect.POSTGRES]: "INTEGER"
30
- },
31
- [AcceptedColumnTypes.STRING]: {
32
- [Dialect.SQLITE]: "TEXT",
33
- [Dialect.POSTGRES]: "VARCHAR"
34
- },
35
- [AcceptedColumnTypes.BOOLEAN]: {
36
- [Dialect.SQLITE]: "INTEGER",
37
- [Dialect.POSTGRES]: "BOOLEAN"
38
- },
39
- [AcceptedColumnTypes.DATE]: {
40
- [Dialect.SQLITE]: "TEXT",
41
- [Dialect.POSTGRES]: "DATE"
42
- },
43
- [AcceptedColumnTypes.FLOAT]: {
44
- [Dialect.SQLITE]: "REAL",
45
- [Dialect.POSTGRES]: "FLOAT"
46
- },
47
- [AcceptedColumnTypes.DECIMAL]: {
48
- [Dialect.SQLITE]: "TEXT",
49
- [Dialect.POSTGRES]: "DECIMAL"
50
- },
51
- [AcceptedColumnTypes.BIGINT]: {
52
- [Dialect.SQLITE]: "TEXT",
53
- [Dialect.POSTGRES]: "BIGINT"
54
- },
55
- [AcceptedColumnTypes.TEXT]: {
56
- [Dialect.SQLITE]: "TEXT",
57
- [Dialect.POSTGRES]: "TEXT"
58
- },
59
- [AcceptedColumnTypes.BLOB]: {
60
- [Dialect.SQLITE]: "BLOB",
61
- [Dialect.POSTGRES]: "BYTEA"
62
- },
63
- [AcceptedColumnTypes.JSON]: {
64
- [Dialect.SQLITE]: "TEXT",
65
- [Dialect.POSTGRES]: "JSONB"
66
- },
67
- [AcceptedColumnTypes.VARCHAR]: {
68
- [Dialect.SQLITE]: "TEXT",
69
- [Dialect.POSTGRES]: "VARCHAR"
70
- },
71
- [AcceptedColumnTypes.TIME]: {
72
- [Dialect.SQLITE]: "TEXT",
73
- [Dialect.POSTGRES]: "TIME"
74
- },
75
- [AcceptedColumnTypes.TIMESTAMP]: {
76
- [Dialect.SQLITE]: "TEXT",
77
- [Dialect.POSTGRES]: "TIMESTAMP"
78
- },
79
- [AcceptedColumnTypes.DOUBLE]: {
80
- [Dialect.SQLITE]: "REAL",
81
- [Dialect.POSTGRES]: "DOUBLE PRECISION"
82
- },
83
- [AcceptedColumnTypes.DATETIME]: {
84
- [Dialect.SQLITE]: "TEXT",
85
- [Dialect.POSTGRES]: "TIMESTAMP"
86
- },
87
- [AcceptedColumnTypes.DATEONLY]: {
88
- [Dialect.SQLITE]: "TEXT",
89
- [Dialect.POSTGRES]: "DATE"
90
- },
91
- [AcceptedColumnTypes.ENUM]: {
92
- [Dialect.SQLITE]: "TEXT",
93
- [Dialect.POSTGRES]: "TEXT"
94
- },
95
- [AcceptedColumnTypes.SERIAL]: {
96
- [Dialect.SQLITE]: "INTEGER AUTOINCREMENT",
97
- [Dialect.POSTGRES]: "SERIAL"
98
- }
99
- };
100
-
101
- export {
102
- AcceptedColumnTypes,
103
- ColumnTypeMapping
104
- };
@@ -1,9 +0,0 @@
1
- // src/table/constants.ts
2
- var Dialect = {
3
- POSTGRES: "postgres",
4
- SQLITE: "sqlite"
5
- };
6
-
7
- export {
8
- Dialect
9
- };
@@ -1,113 +0,0 @@
1
- import {
2
- AcceptedColumnTypes,
3
- ColumnTypeMapping
4
- } from "./chunk-G3LSCLIQ.js";
5
- import {
6
- Dialect
7
- } from "./chunk-GLOHF5CP.js";
8
-
9
- // src/column/index.ts
10
- var Column = class _Column {
11
- definition;
12
- type;
13
- length;
14
- enums;
15
- _output;
16
- constructor(options) {
17
- this.type = options.type;
18
- this.enums = [];
19
- this.length = null;
20
- if ("length" in options) {
21
- this.length = options.length;
22
- }
23
- if ("values" in options) {
24
- this.enums = options.values;
25
- }
26
- this.definition = {
27
- autoIncrement: false,
28
- primaryKey: false,
29
- notNull: false,
30
- unique: false,
31
- comment: null,
32
- default: void 0
33
- };
34
- }
35
- static define(options) {
36
- return new _Column(options);
37
- }
38
- autoIncrement() {
39
- this.definition.autoIncrement = true;
40
- return this;
41
- }
42
- primaryKey() {
43
- this.definition.primaryKey = true;
44
- return this;
45
- }
46
- notNull() {
47
- this.definition.notNull = true;
48
- return this;
49
- }
50
- unique() {
51
- this.definition.unique = true;
52
- return this;
53
- }
54
- comment(value) {
55
- this.definition.comment = value;
56
- return this;
57
- }
58
- default(value) {
59
- this.definition.default = value;
60
- return this;
61
- }
62
- dialect(dialect) {
63
- this.definition.dialect = dialect;
64
- return this;
65
- }
66
- toQuery() {
67
- if (!this.definition.dialect) {
68
- throw new Error("No DB Dialect defined");
69
- }
70
- const correctType = ColumnTypeMapping[this.type][this.definition.dialect];
71
- let sql = correctType + (this.length ? `(${this.length})` : "");
72
- if (this.definition.primaryKey) {
73
- sql += " PRIMARY KEY";
74
- }
75
- if (this.definition.autoIncrement || this.type === AcceptedColumnTypes.SERIAL) {
76
- const isPrimaryKey = !!this.definition.primaryKey;
77
- if (this.definition.dialect === Dialect.POSTGRES) {
78
- sql = `SERIAL${isPrimaryKey ? " PRIMARY KEY" : ""}`;
79
- } else {
80
- if (this.type !== AcceptedColumnTypes.SERIAL) {
81
- sql += " AUTOINCREMENT";
82
- } else {
83
- const sqls = ["INTEGER", "PRIMARY KEY", "AUTOINCREMENT"];
84
- if (!isPrimaryKey) sqls.splice(1, 1);
85
- sql = sqls.join(" ");
86
- }
87
- }
88
- }
89
- if (this.definition.notNull) {
90
- sql += " NOT NULL";
91
- }
92
- if (this.definition.unique) {
93
- sql += " UNIQUE";
94
- }
95
- if (this.definition.default !== void 0) {
96
- const value = this.definition.default;
97
- const isString = typeof this.definition.default === "string";
98
- const finalValue = isString ? `'${value}'` : value;
99
- sql += ` DEFAULT ${finalValue}`;
100
- }
101
- return { query: sql, params: [] };
102
- }
103
- toString() {
104
- return this.toQuery().query;
105
- }
106
- infer() {
107
- return null;
108
- }
109
- };
110
-
111
- export {
112
- Column
113
- };
@@ -1,98 +0,0 @@
1
- import {
2
- Dialect
3
- } from "./chunk-GLOHF5CP.js";
4
-
5
- // src/database/wrapper.ts
6
- import { SQL } from "bun";
7
- import { Database as Sqlite } from "bun:sqlite";
8
- var DatabasePsql = class {
9
- dialect;
10
- options;
11
- client;
12
- status;
13
- constructor(options) {
14
- this.dialect = Dialect.POSTGRES;
15
- this.options = options;
16
- this.status = "connecting";
17
- this.client = new SQL({
18
- ...options,
19
- onconnect: () => {
20
- this.status = "connected";
21
- },
22
- onclose: () => {
23
- this.status = "disconnected";
24
- }
25
- });
26
- this.connect();
27
- }
28
- async connect() {
29
- await this.client.connect();
30
- return this;
31
- }
32
- async disconnect() {
33
- await this.client.close();
34
- return this;
35
- }
36
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
37
- async exec(sql, values) {
38
- if (!values) {
39
- return this.client.unsafe(sql);
40
- }
41
- return this.client.unsafe(sql, values);
42
- }
43
- async transaction(fn) {
44
- try {
45
- await this.exec("BEGIN");
46
- const result = await fn();
47
- await this.exec("COMMIT");
48
- return result;
49
- } catch (err) {
50
- await this.exec("ROLLBACK");
51
- throw err;
52
- }
53
- }
54
- };
55
- var DatabaseSqlite = class {
56
- dialect;
57
- options;
58
- client;
59
- status;
60
- constructor(options) {
61
- this.dialect = Dialect.SQLITE;
62
- this.options = options;
63
- this.status = "connecting";
64
- this.client = new Sqlite(options.filename);
65
- this.status = "connected";
66
- }
67
- async connect() {
68
- this.client = new Sqlite(this.options.filename);
69
- this.status = "connected";
70
- return this;
71
- }
72
- async disconnect() {
73
- this.client.close();
74
- this.status = "disconnected";
75
- return this;
76
- }
77
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
78
- async exec(sql, params) {
79
- const query = this.client.prepare(sql, params);
80
- return query.all();
81
- }
82
- async transaction(fn) {
83
- try {
84
- await this.exec("BEGIN");
85
- const result = await fn();
86
- await this.exec("COMMIT");
87
- return result;
88
- } catch (err) {
89
- await this.exec("ROLLBACK");
90
- throw err;
91
- }
92
- }
93
- };
94
-
95
- export {
96
- DatabasePsql,
97
- DatabaseSqlite
98
- };
@@ -1,40 +0,0 @@
1
- import {
2
- Dialect
3
- } from "./chunk-GLOHF5CP.js";
4
-
5
- // src/database/column.ts
6
- async function addColumn(tableName, columnName, column) {
7
- await this.client.exec(
8
- `ALTER TABLE ${tableName} ADD COLUMN ${columnName} ${column.toString()};`
9
- );
10
- if (!this.tables[tableName]) return this;
11
- this.tables[tableName].columns[columnName] = column;
12
- return this;
13
- }
14
- async function renameColumn(tableName, oldName, newName) {
15
- if (this.dialect === Dialect.SQLITE) {
16
- throw new Error("SQLite does not support RENAME COLUMN natively.");
17
- }
18
- await this.client.exec(
19
- `ALTER TABLE ${tableName} RENAME COLUMN ${oldName} TO ${newName};`
20
- );
21
- if (!this.tables[tableName]) return this;
22
- this.tables[tableName].columns[newName] = this.tables[tableName].columns[oldName];
23
- delete this.tables[tableName].columns[oldName];
24
- return this;
25
- }
26
- async function dropColumn(tableName, columnName) {
27
- if (this.dialect === Dialect.SQLITE) {
28
- throw new Error("SQLite does not support DROP COLUMN natively.");
29
- }
30
- await this.client.exec(`ALTER TABLE ${tableName} DROP COLUMN ${columnName};`);
31
- if (!this.tables[tableName]) return this;
32
- delete this.tables[tableName].columns[columnName];
33
- return this;
34
- }
35
-
36
- export {
37
- addColumn,
38
- renameColumn,
39
- dropColumn
40
- };
@@ -1,60 +0,0 @@
1
- // src/query/constants.ts
2
- var LogicalOperator = {
3
- AND: "AND",
4
- OR: "OR"
5
- };
6
- var ConditionClause = {
7
- WHERE: "WHERE",
8
- HAVING: "HAVING"
9
- };
10
- var AcceptedOperator = {
11
- EQ: "eq",
12
- NE: "ne",
13
- GT: "gt",
14
- LT: "lt",
15
- GTE: "gte",
16
- LTE: "lte",
17
- IN: "in",
18
- NOT_IN: "notIn",
19
- LIKE: "like",
20
- NOT_LIKE: "notLike",
21
- ILIKE: "ilike",
22
- NOT_ILIKE: "notILike",
23
- IS_NULL: "isNull",
24
- IS_NOT_NULL: "isNotNull",
25
- BETWEEN: "between",
26
- NOT_BETWEEN: "notBetween"
27
- };
28
- var QueryType = {
29
- SELECT: "SELECT",
30
- INSERT: "INSERT",
31
- UPDATE: "UPDATE",
32
- DELETE: "DELETE"
33
- };
34
- var OrderBy = {
35
- ASC: "ASC",
36
- DESC: "DESC"
37
- };
38
- var AggregationFunction = {
39
- COUNT: "COUNT",
40
- SUM: "SUM",
41
- MIN: "MIN",
42
- MAX: "MAX",
43
- AVG: "AVG"
44
- };
45
- var AcceptedJoin = {
46
- INNER: "INNER",
47
- LEFT: "LEFT",
48
- RIGHT: "RIGHT",
49
- NATURAL: "NATURAL"
50
- };
51
-
52
- export {
53
- LogicalOperator,
54
- ConditionClause,
55
- AcceptedOperator,
56
- QueryType,
57
- OrderBy,
58
- AggregationFunction,
59
- AcceptedJoin
60
- };