@spinajs/orm-sqlite 1.2.26 → 1.2.33

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.
@@ -0,0 +1,32 @@
1
+ import { SqlColumnQueryCompiler, SqlTableQueryCompiler, SqlOnDuplicateQueryCompiler, SqlInsertQueryCompiler } from '@spinajs/orm-sql';
2
+ import { ICompilerOutput, OrderByBuilder, OrderByQueryCompiler, OnDuplicateQueryBuilder, InsertQueryBuilder } from '@spinajs/orm';
3
+ import { Container } from '@spinajs/di';
4
+ export declare class SqliteOrderByCompiler extends OrderByQueryCompiler {
5
+ protected _builder: OrderByBuilder;
6
+ constructor(builder: OrderByBuilder);
7
+ compile(): ICompilerOutput;
8
+ }
9
+ export declare class SqliteOnDuplicateQueryCompiler extends SqlOnDuplicateQueryCompiler {
10
+ protected _builder: OnDuplicateQueryBuilder;
11
+ constructor(builder: OnDuplicateQueryBuilder);
12
+ compile(): {
13
+ bindings: any[];
14
+ expression: string;
15
+ };
16
+ }
17
+ export declare class SqliteTableQueryCompiler extends SqlTableQueryCompiler {
18
+ compile(): ICompilerOutput;
19
+ }
20
+ export declare class SqliteInsertQueryCompiler extends SqlInsertQueryCompiler {
21
+ protected _container: Container;
22
+ constructor(builder: InsertQueryBuilder);
23
+ compile(): {
24
+ bindings: any[];
25
+ expression: string;
26
+ };
27
+ protected into(): string;
28
+ }
29
+ export declare class SqliteColumnCompiler extends SqlColumnQueryCompiler {
30
+ compile(): ICompilerOutput;
31
+ protected _defaultCompiler(): string;
32
+ }
@@ -0,0 +1,214 @@
1
+ "use strict";
2
+ /* eslint-disable prettier/prettier */
3
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
4
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
5
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
6
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
7
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
8
+ };
9
+ var __metadata = (this && this.__metadata) || function (k, v) {
10
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.SqliteColumnCompiler = exports.SqliteInsertQueryCompiler = exports.SqliteTableQueryCompiler = exports.SqliteOnDuplicateQueryCompiler = exports.SqliteOrderByCompiler = void 0;
14
+ const orm_sql_1 = require("@spinajs/orm-sql");
15
+ const orm_1 = require("@spinajs/orm");
16
+ const di_1 = require("@spinajs/di");
17
+ const _ = require("lodash");
18
+ let SqliteOrderByCompiler = class SqliteOrderByCompiler extends orm_1.OrderByQueryCompiler {
19
+ constructor(builder) {
20
+ super();
21
+ if (!builder) {
22
+ throw new Error('builder cannot be null or undefined');
23
+ }
24
+ this._builder = builder;
25
+ }
26
+ compile() {
27
+ const sort = this._builder.getSort();
28
+ let stmt = '';
29
+ const bindings = [];
30
+ if (sort) {
31
+ stmt = ` ORDER BY \`${sort.column}\` ${sort.order.toLowerCase() === 'asc' ? 'ASC' : 'DESC'}`;
32
+ }
33
+ return {
34
+ bindings,
35
+ expression: stmt,
36
+ };
37
+ }
38
+ };
39
+ SqliteOrderByCompiler = __decorate([
40
+ (0, di_1.NewInstance)(),
41
+ __metadata("design:paramtypes", [orm_1.OrderByBuilder])
42
+ ], SqliteOrderByCompiler);
43
+ exports.SqliteOrderByCompiler = SqliteOrderByCompiler;
44
+ let SqliteOnDuplicateQueryCompiler = class SqliteOnDuplicateQueryCompiler extends orm_sql_1.SqlOnDuplicateQueryCompiler {
45
+ constructor(builder) {
46
+ super(builder);
47
+ }
48
+ compile() {
49
+ const columns = this._builder.getColumnsToUpdate().map((c) => {
50
+ if (_.isString(c)) {
51
+ return `${c} = ?`;
52
+ }
53
+ else {
54
+ return c.Query;
55
+ }
56
+ });
57
+ const bindings = _.flatMap(this._builder.getColumnsToUpdate(), (c) => {
58
+ if (_.isString(c)) {
59
+ const cIndex = this._builder
60
+ .getParent()
61
+ .getColumns()
62
+ .findIndex((col) => (_.isString(col.Column) ? col.Column === c : null));
63
+ return this._builder.getParent().Values[0][`${cIndex}`];
64
+ }
65
+ else {
66
+ return c.Bindings;
67
+ }
68
+ });
69
+ return {
70
+ bindings,
71
+ expression: `ON CONFLICT(${this._builder.getColumn().join(',')}) DO UPDATE SET ${columns.join(',')}`,
72
+ };
73
+ }
74
+ };
75
+ SqliteOnDuplicateQueryCompiler = __decorate([
76
+ (0, di_1.NewInstance)(),
77
+ __metadata("design:paramtypes", [orm_1.OnDuplicateQueryBuilder])
78
+ ], SqliteOnDuplicateQueryCompiler);
79
+ exports.SqliteOnDuplicateQueryCompiler = SqliteOnDuplicateQueryCompiler;
80
+ let SqliteTableQueryCompiler = class SqliteTableQueryCompiler extends orm_sql_1.SqlTableQueryCompiler {
81
+ compile() {
82
+ const _table = this._table();
83
+ const _columns = this._columns();
84
+ const _foreignKeys = this._foreignKeys();
85
+ return {
86
+ bindings: [],
87
+ expression: `${_table} (${_columns} ${_foreignKeys ? ',' + _foreignKeys : ''})`,
88
+ };
89
+ }
90
+ };
91
+ SqliteTableQueryCompiler = __decorate([
92
+ (0, di_1.NewInstance)(),
93
+ (0, di_1.Inject)(di_1.Container)
94
+ ], SqliteTableQueryCompiler);
95
+ exports.SqliteTableQueryCompiler = SqliteTableQueryCompiler;
96
+ let SqliteInsertQueryCompiler = class SqliteInsertQueryCompiler extends orm_sql_1.SqlInsertQueryCompiler {
97
+ constructor(builder) {
98
+ super(builder);
99
+ }
100
+ compile() {
101
+ const into = this.into();
102
+ const columns = this.columns();
103
+ const values = this.values();
104
+ const onDuplicate = this.onDuplicate();
105
+ return {
106
+ bindings: values.bindings.concat(onDuplicate.bindings),
107
+ expression: `${into} ${columns} ${values.data} ${onDuplicate.expression}`.trim(),
108
+ };
109
+ }
110
+ into() {
111
+ return `INSERT${this._builder.Ignore ? ' OR IGNORE' : ''} INTO \`${this._builder.Table}\``;
112
+ }
113
+ };
114
+ __decorate([
115
+ (0, di_1.Autoinject)(),
116
+ __metadata("design:type", di_1.Container)
117
+ ], SqliteInsertQueryCompiler.prototype, "_container", void 0);
118
+ SqliteInsertQueryCompiler = __decorate([
119
+ (0, di_1.NewInstance)(),
120
+ __metadata("design:paramtypes", [orm_1.InsertQueryBuilder])
121
+ ], SqliteInsertQueryCompiler);
122
+ exports.SqliteInsertQueryCompiler = SqliteInsertQueryCompiler;
123
+ let SqliteColumnCompiler = class SqliteColumnCompiler extends orm_sql_1.SqlColumnQueryCompiler {
124
+ compile() {
125
+ const _stmt = [];
126
+ _stmt.push(`\`${this.builder.Name}\``);
127
+ switch (this.builder.Type) {
128
+ case 'binary':
129
+ case 'tinyblob':
130
+ case 'mediumblob':
131
+ case 'longblob':
132
+ _stmt.push('BLOB');
133
+ break;
134
+ case 'string':
135
+ case 'text':
136
+ case 'mediumtext':
137
+ case 'tinytext':
138
+ case 'longtext':
139
+ case 'date':
140
+ case 'dateTime':
141
+ case 'time':
142
+ case 'set':
143
+ _stmt.push(`TEXT`);
144
+ break;
145
+ case 'float':
146
+ case 'double':
147
+ _stmt.push(`REAL`);
148
+ break;
149
+ case 'decimal':
150
+ _stmt.push(`DECIMAL`);
151
+ break;
152
+ case 'int':
153
+ case 'tinyint':
154
+ case 'smallint':
155
+ case 'mediumint':
156
+ case 'bigint':
157
+ case 'boolean':
158
+ _stmt.push('INTEGER');
159
+ break;
160
+ }
161
+ if (this.builder.Unsigned) {
162
+ _stmt.push('UNSIGNED');
163
+ }
164
+ if (this.builder.Charset) {
165
+ _stmt.push(`CHARACTER SET '${this.builder.Charset}'`);
166
+ }
167
+ if (this.builder.Collation) {
168
+ _stmt.push(`COLLATE '${this.builder.Collation}'`);
169
+ }
170
+ if (this.builder.NotNull) {
171
+ _stmt.push('NOT NULL');
172
+ }
173
+ if (this.builder.Default) {
174
+ _stmt.push(this._defaultCompiler());
175
+ }
176
+ if (this.builder.Comment) {
177
+ _stmt.push(`COMMENT '${this.builder.Comment}'`);
178
+ }
179
+ if (this.builder.PrimaryKey) {
180
+ _stmt.push(`PRIMARY KEY`);
181
+ }
182
+ if (this.builder.AutoIncrement) {
183
+ _stmt.push(`AUTOINCREMENT`);
184
+ }
185
+ if (this.builder.Unique) {
186
+ _stmt.push('UNIQUE');
187
+ }
188
+ return {
189
+ bindings: [],
190
+ expression: _stmt.filter((x) => !_.isEmpty(x)).join(' '),
191
+ };
192
+ }
193
+ _defaultCompiler() {
194
+ let _stmt = '';
195
+ if (_.isNil(this.builder.Default) || (_.isString(this.builder.Default) && _.isEmpty(this.builder.Default.trim()))) {
196
+ return _stmt;
197
+ }
198
+ if (_.isString(this.builder.Default)) {
199
+ _stmt = `DEFAULT '${this.builder.Default.trim()}'`;
200
+ }
201
+ else if (_.isNumber(this.builder.Default)) {
202
+ _stmt = `DEFAULT ${this.builder.Default}`;
203
+ }
204
+ else if (this.builder.Default instanceof orm_1.RawQuery) {
205
+ _stmt = `DEFAULT ${(this.builder.Default).Query}`;
206
+ }
207
+ return _stmt;
208
+ }
209
+ };
210
+ SqliteColumnCompiler = __decorate([
211
+ (0, di_1.NewInstance)()
212
+ ], SqliteColumnCompiler);
213
+ exports.SqliteColumnCompiler = SqliteColumnCompiler;
214
+ //# sourceMappingURL=compilers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compilers.js","sourceRoot":"","sources":["../src/compilers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { DatetimeValueConverter } from '@spinajs/orm';
2
+ import { DateTime } from 'luxon';
3
+ export declare class SqliteDatetimeValueConverter extends DatetimeValueConverter {
4
+ toDB(value: Date | DateTime): string;
5
+ fromDB(value: string): DateTime;
6
+ }
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SqliteDatetimeValueConverter = void 0;
4
+ /* eslint-disable prettier/prettier */
5
+ const orm_1 = require("@spinajs/orm");
6
+ const luxon_1 = require("luxon");
7
+ class SqliteDatetimeValueConverter extends orm_1.DatetimeValueConverter {
8
+ toDB(value) {
9
+ if (value instanceof Date) {
10
+ return value.toISOString();
11
+ }
12
+ if (value instanceof luxon_1.DateTime) {
13
+ value.toISO();
14
+ }
15
+ return null;
16
+ }
17
+ fromDB(value) {
18
+ if (!value) {
19
+ return null;
20
+ }
21
+ return luxon_1.DateTime.fromISO(value);
22
+ }
23
+ }
24
+ exports.SqliteDatetimeValueConverter = SqliteDatetimeValueConverter;
25
+ //# sourceMappingURL=converters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"converters.js","sourceRoot":"","sources":["../src/converters.ts"],"names":[],"mappings":";;;AAAA,sCAAsC;AACtC,sCAAsD;AACtD,iCAAiC;AAEjC,MAAa,4BAA6B,SAAQ,4BAAsB;IAC/D,IAAI,CAAC,KAAsB;QAChC,IAAI,KAAK,YAAY,IAAI,EAAE;YACzB,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;SAC5B;QAED,IAAI,KAAK,YAAY,gBAAQ,EAAE;YAC7B,KAAK,CAAC,KAAK,EAAE,CAAC;SACf;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,MAAM,CAAC,KAAa;QACzB,IAAI,CAAC,KAAK,EAAE;YACV,OAAO,IAAI,CAAC;SACb;QAED,OAAO,gBAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;CACF;AApBD,oEAoBC"}
package/lib/index.d.ts ADDED
@@ -0,0 +1,23 @@
1
+ export * from './compilers';
2
+ import { IColumnDescriptor, QueryContext, OrmDriver, QueryBuilder, TransactionCallback } from '@spinajs/orm';
3
+ import { Database } from 'sqlite3';
4
+ import { SqlDriver } from '@spinajs/orm-sql';
5
+ import { Container } from '@spinajs/di';
6
+ export declare class SqliteOrmDriver extends SqlDriver {
7
+ protected Db: Database;
8
+ execute(stmt: string, params: any[], queryContext: QueryContext): Promise<any>;
9
+ ping(): Promise<boolean>;
10
+ connect(): Promise<OrmDriver>;
11
+ disconnect(): Promise<OrmDriver>;
12
+ resolve(container: Container): Promise<void>;
13
+ transaction(qrOrCallback: QueryBuilder[] | TransactionCallback): Promise<void>;
14
+ /**
15
+ *
16
+ * Retrieves information about specific DB table if exists. If table not exists returns null
17
+ *
18
+ * @param name table name to retrieve info
19
+ * @param _schema - optional schema name
20
+ * @returns {[] | null}
21
+ */
22
+ tableInfo(name: string, _schema?: string): Promise<IColumnDescriptor[]>;
23
+ }
package/lib/index.js ADDED
@@ -0,0 +1,182 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
10
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
11
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
12
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
13
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
14
+ };
15
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
17
+ };
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.SqliteOrmDriver = void 0;
20
+ /* eslint-disable prettier/prettier */
21
+ __exportStar(require("./compilers"), exports);
22
+ const orm_1 = require("@spinajs/orm");
23
+ const sqlite3_1 = require("sqlite3");
24
+ const orm_sql_1 = require("@spinajs/orm-sql");
25
+ const di_1 = require("@spinajs/di");
26
+ const compilers_1 = require("./compilers");
27
+ const statements_1 = require("./statements");
28
+ const converters_1 = require("./converters");
29
+ const exceptions_1 = require("@spinajs/exceptions");
30
+ let SqliteOrmDriver = class SqliteOrmDriver extends orm_sql_1.SqlDriver {
31
+ execute(stmt, params, queryContext) {
32
+ const queryParams = params !== null && params !== void 0 ? params : [];
33
+ if (!this.Db) {
34
+ throw new Error('cannot execute sqlite statement, no db connection avaible');
35
+ }
36
+ super.execute(stmt, queryParams, queryContext);
37
+ return new Promise((resolve, reject) => {
38
+ switch (queryContext) {
39
+ case orm_1.QueryContext.Update:
40
+ case orm_1.QueryContext.Delete:
41
+ case orm_1.QueryContext.Schema:
42
+ case orm_1.QueryContext.Transaction:
43
+ this.Db.run(stmt, ...queryParams, (err, data) => {
44
+ if (err) {
45
+ reject(err);
46
+ return;
47
+ }
48
+ resolve(data);
49
+ });
50
+ break;
51
+ case orm_1.QueryContext.Select:
52
+ this.Db.all(stmt, ...queryParams, (err, rows) => {
53
+ if (err) {
54
+ reject(err);
55
+ return;
56
+ }
57
+ resolve(rows);
58
+ });
59
+ break;
60
+ case orm_1.QueryContext.Insert:
61
+ this.Db.run(stmt, ...queryParams, function (err) {
62
+ if (err) {
63
+ if (err.code === 'SQLITE_CONSTRAINT') {
64
+ reject(new exceptions_1.ResourceDuplicated(err));
65
+ }
66
+ else {
67
+ reject(err);
68
+ }
69
+ return;
70
+ }
71
+ resolve(this.lastID);
72
+ });
73
+ break;
74
+ }
75
+ });
76
+ }
77
+ async ping() {
78
+ return this.Db !== null && this.Db !== undefined;
79
+ }
80
+ async connect() {
81
+ return new Promise((resolve, reject) => {
82
+ this.Db = new sqlite3_1.Database(this.Options.Filename, (err) => {
83
+ if (err) {
84
+ reject(err);
85
+ return;
86
+ }
87
+ resolve(this);
88
+ });
89
+ });
90
+ }
91
+ async disconnect() {
92
+ return new Promise((res, rej) => {
93
+ this.Db.close((err) => {
94
+ if (err) {
95
+ rej(err);
96
+ return;
97
+ }
98
+ this.Db = null;
99
+ res(this);
100
+ });
101
+ });
102
+ }
103
+ async resolve(container) {
104
+ super.resolve(container);
105
+ this.Container.register(compilers_1.SqliteColumnCompiler).as(orm_1.ColumnQueryCompiler);
106
+ this.Container.register(compilers_1.SqliteTableQueryCompiler).as(orm_1.TableQueryCompiler);
107
+ this.Container.register(compilers_1.SqliteOrderByCompiler).as(orm_1.OrderByQueryCompiler);
108
+ this.Container.register(statements_1.SqlLiteJoinStatement).as(orm_1.JoinStatement);
109
+ this.Container.register(compilers_1.SqliteOnDuplicateQueryCompiler).as(orm_1.OnDuplicateQueryCompiler);
110
+ this.Container.register(compilers_1.SqliteInsertQueryCompiler).as(orm_1.InsertQueryCompiler);
111
+ this.Container.register(converters_1.SqliteDatetimeValueConverter).as(orm_1.DatetimeValueConverter);
112
+ }
113
+ async transaction(qrOrCallback) {
114
+ if (!qrOrCallback) {
115
+ return;
116
+ }
117
+ await this.execute('BEGIN TRANSACTION', null, orm_1.QueryContext.Transaction);
118
+ try {
119
+ if (Array.isArray(qrOrCallback)) {
120
+ for (const q of qrOrCallback) {
121
+ await q;
122
+ }
123
+ }
124
+ else {
125
+ await qrOrCallback(this);
126
+ }
127
+ await this.execute('COMMIT', null, orm_1.QueryContext.Transaction);
128
+ }
129
+ catch (ex) {
130
+ await this.execute('ROLLBACK', null, orm_1.QueryContext.Transaction);
131
+ throw ex;
132
+ }
133
+ }
134
+ /**
135
+ *
136
+ * Retrieves information about specific DB table if exists. If table not exists returns null
137
+ *
138
+ * @param name table name to retrieve info
139
+ * @param _schema - optional schema name
140
+ * @returns {[] | null}
141
+ */
142
+ async tableInfo(name, _schema) {
143
+ const tblInfo = (await this.execute(`PRAGMA table_info(${name});`, null, orm_1.QueryContext.Select));
144
+ const indexInfo = (await this.execute(`select type, name, tbl_name, sql FROM sqlite_master WHERE type='index' AND tbl_name='${name}'`, null, orm_1.QueryContext.Select));
145
+ const re = /\((.*?)\)/;
146
+ const indices = indexInfo.map((i) => {
147
+ var _a;
148
+ return {
149
+ table: i.tbl_name,
150
+ column_name: (_a = i.sql) === null || _a === void 0 ? void 0 : _a.match(re)[0],
151
+ };
152
+ });
153
+ if (!Array.isArray(tblInfo) || tblInfo.length === 0) {
154
+ return null;
155
+ }
156
+ return tblInfo.map((r) => {
157
+ return {
158
+ Type: r.type,
159
+ MaxLength: -1,
160
+ Comment: '',
161
+ DefaultValue: r.dflt_value,
162
+ NativeType: r.type,
163
+ Unsigned: false,
164
+ Nullable: r.notnull === 0,
165
+ PrimaryKey: r.pk === 1,
166
+ Uuid: false,
167
+ Ignore: false,
168
+ // simply assumpt that integer pkeys are autoincement / auto fill by default
169
+ AutoIncrement: r.pk === 1 && r.type === 'INTEGER',
170
+ Name: r.name,
171
+ Converter: null,
172
+ Schema: _schema ? _schema : this.Options.Database,
173
+ Unique: indices.find((i) => i.column_name && i.column_name.includes(r.name) && i.table === name) !== undefined,
174
+ };
175
+ });
176
+ }
177
+ };
178
+ SqliteOrmDriver = __decorate([
179
+ (0, di_1.Injectable)('orm-driver-sqlite')
180
+ ], SqliteOrmDriver);
181
+ exports.SqliteOrmDriver = SqliteOrmDriver;
182
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}