@spinajs/orm-sqlite 1.0.19 → 1.2.26

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 ADDED
@@ -0,0 +1,11 @@
1
+ # `@spinajs/orm-sqlite`
2
+
3
+ > TODO: description
4
+
5
+ ## Usage
6
+
7
+ ```
8
+ const ormSqlite = require('@spinajs/orm-sqlite');
9
+
10
+ // TODO: DEMONSTRATE API
11
+ ```
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+
3
+ module.exports = ormSqlite;
4
+
5
+ function ormSqlite() {
6
+ // TODO
7
+ }
package/package.json CHANGED
@@ -1,72 +1,30 @@
1
1
  {
2
2
  "name": "@spinajs/orm-sqlite",
3
- "version": "1.0.19",
4
- "description": "SpinaJS orm sqlite support. Contains sqlite driver.",
5
- "main": "lib/index.js",
6
- "private": false,
7
- "scripts": {
8
- "test": "ts-mocha -p tsconfig.json test/**/*.test.ts",
9
- "coverage": "nyc npm run test",
10
- "build-docs": "rimraf docs && typedoc --options typedoc.json src/",
11
- "build": "tsc",
12
- "prepare": "npm run build",
13
- "format": "prettier --write \"src/**/*.ts\" \"src/**/*.js\"",
14
- "lint": "tslint -p tsconfig.json",
15
- "prepublishOnly": "npm test && npm run lint",
16
- "preversion": "npm run lint",
17
- "version": "npm run format && git add -A src",
18
- "postversion": "git push && git push --tags"
3
+ "version": "1.2.26",
4
+ "description": "> TODO: description",
5
+ "author": "Grzegorz Beń <grzegorz.ben@coderush.pl>",
6
+ "homepage": "https://github.com/spinajs/main#readme",
7
+ "license": "ISC",
8
+ "main": "lib/orm-sqlite.js",
9
+ "directories": {
10
+ "lib": "lib",
11
+ "test": "__tests__"
19
12
  },
20
13
  "files": [
21
- "lib/**/*"
14
+ "lib"
22
15
  ],
16
+ "publishConfig": {
17
+ "access": "public"
18
+ },
23
19
  "repository": {
24
20
  "type": "git",
25
- "url": "git+https://github.com/spinajs/orm-sqlite.git"
21
+ "url": "git+https://github.com/spinajs/main.git"
26
22
  },
27
- "keywords": [
28
- "di",
29
- "container",
30
- "spinajs",
31
- "di"
32
- ],
33
- "author": "SpinaJS <spinajs@coderush.pl> (https://github.com/spinajs/core)",
34
- "license": "MIT",
35
- "bugs": {
36
- "url": "https://github.com/spinajs/orm-sqlite/issues"
23
+ "scripts": {
24
+ "test": "echo \"Error: run tests from root\" && exit 1"
37
25
  },
38
- "homepage": "https://github.com/spinajs/orm-sqlite#readme",
39
- "dependencies": {
40
- "@spinajs/configuration": "^1.0.5",
41
- "@spinajs/di": "^1.0.7",
42
- "@spinajs/exceptions": "^1.0.0",
43
- "@spinajs/log": "^1.0.2",
44
- "@spinajs/orm": "^1.0.31",
45
- "@spinajs/orm-sql": "^1.0.14",
46
- "lodash": "^4.17.15",
47
- "sqlite3": "^4.1.1"
26
+ "bugs": {
27
+ "url": "https://github.com/spinajs/main/issues"
48
28
  },
49
- "devDependencies": {
50
- "@types/bunyan": "^1.8.6",
51
- "@types/chai": "^4.1.7",
52
- "@types/chai-as-promised": "^7.1.0",
53
- "@types/lodash": "^4.14.136",
54
- "@types/sinon": "^7.5.1",
55
- "@types/sqlite3": "^3.1.5",
56
- "chai": "^4.2.0",
57
- "chai-as-promised": "^7.1.1",
58
- "mocha": "^6.1.4",
59
- "nyc": "^14.1.1",
60
- "prettier": "^1.18.2",
61
- "sinon": "^8.1.1",
62
- "ts-mocha": "^6.0.0",
63
- "ts-node": "^8.3.0",
64
- "tslint": "^5.20.1",
65
- "tslint-circular-dependencies": "^0.1.0",
66
- "tslint-config-prettier": "^1.18.0",
67
- "tslint-config-standard": "^8.0.1",
68
- "tslint-no-unused-expression-chai": "^0.1.4",
69
- "typedoc": "^0.14.2",
70
- "typescript": "^3.7.3"
71
- }
29
+ "gitHead": "db0a4879ea356c677f78938201ddf93e032e1e63"
72
30
  }
@@ -1,21 +0,0 @@
1
- import { SqlColumnQueryCompiler, SqlTableQueryCompiler, SqlOnDuplicateQueryCompiler } from "@spinajs/orm-sql";
2
- import { ICompilerOutput, OrderByBuilder, OrderByQueryCompiler, OnDuplicateQueryBuilder } from "@spinajs/orm";
3
- export declare class SqliteOrderByCompiler extends OrderByQueryCompiler {
4
- protected _builder: OrderByBuilder;
5
- constructor(builder: OrderByBuilder);
6
- compile(): ICompilerOutput;
7
- }
8
- export declare class SqliteOnDuplicateQueryCompiler extends SqlOnDuplicateQueryCompiler {
9
- protected _builder: OnDuplicateQueryBuilder;
10
- constructor(builder: OnDuplicateQueryBuilder);
11
- compile(): {
12
- bindings: any[];
13
- expression: string;
14
- };
15
- }
16
- export declare class SqliteTableQueryCompiler extends SqlTableQueryCompiler {
17
- compile(): ICompilerOutput;
18
- }
19
- export declare class SqliteColumnCompiler extends SqlColumnQueryCompiler {
20
- compile(): ICompilerOutput;
21
- }
package/lib/compilers.js DELETED
@@ -1,159 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- 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;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- const orm_sql_1 = require("@spinajs/orm-sql");
13
- const orm_1 = require("@spinajs/orm");
14
- const di_1 = require("@spinajs/di");
15
- const _ = require("lodash");
16
- let SqliteOrderByCompiler = class SqliteOrderByCompiler extends orm_1.OrderByQueryCompiler {
17
- constructor(builder) {
18
- super();
19
- if (!builder) {
20
- throw new Error('builder cannot be null or undefined');
21
- }
22
- this._builder = builder;
23
- }
24
- compile() {
25
- const sort = this._builder.getSort();
26
- let stmt = '';
27
- const bindings = [];
28
- if (sort) {
29
- stmt = ` ORDER BY ${sort.column} ${sort.order.toLowerCase() === "asc" ? "ASC" : "DESC"}`;
30
- }
31
- return {
32
- bindings,
33
- expression: stmt,
34
- };
35
- }
36
- };
37
- SqliteOrderByCompiler = __decorate([
38
- di_1.NewInstance(),
39
- __metadata("design:paramtypes", [orm_1.OrderByBuilder])
40
- ], SqliteOrderByCompiler);
41
- exports.SqliteOrderByCompiler = SqliteOrderByCompiler;
42
- let SqliteOnDuplicateQueryCompiler = class SqliteOnDuplicateQueryCompiler extends orm_sql_1.SqlOnDuplicateQueryCompiler {
43
- constructor(builder) {
44
- super(builder);
45
- }
46
- compile() {
47
- const columns = this._builder.getColumnsToUpdate().map((c) => {
48
- if (_.isString(c)) {
49
- return `${c} = ?`;
50
- }
51
- else {
52
- return c.Query;
53
- }
54
- });
55
- const bindings = this._builder.getColumnsToUpdate().flatMap((c) => {
56
- if (_.isString(c)) {
57
- const cIndex = this._builder.getParent().getColumns().findIndex((col) => (_.isString(col.Column) ? col.Column === c : null));
58
- return this._builder.getParent().Values[0][cIndex];
59
- }
60
- else {
61
- return c.Bindings;
62
- }
63
- });
64
- return {
65
- bindings,
66
- expression: `ON CONFLICT(${this._builder.getColumn().join(",")}) DO UPDATE SET ${columns}`
67
- };
68
- }
69
- };
70
- SqliteOnDuplicateQueryCompiler = __decorate([
71
- di_1.NewInstance(),
72
- __metadata("design:paramtypes", [orm_1.OnDuplicateQueryBuilder])
73
- ], SqliteOnDuplicateQueryCompiler);
74
- exports.SqliteOnDuplicateQueryCompiler = SqliteOnDuplicateQueryCompiler;
75
- let SqliteTableQueryCompiler = class SqliteTableQueryCompiler extends orm_sql_1.SqlTableQueryCompiler {
76
- compile() {
77
- const _table = this._table();
78
- const _columns = this._columns();
79
- return {
80
- bindings: [],
81
- expression: `${_table} (${_columns})`
82
- };
83
- }
84
- };
85
- SqliteTableQueryCompiler = __decorate([
86
- di_1.NewInstance(),
87
- di_1.Inject(di_1.Container)
88
- ], SqliteTableQueryCompiler);
89
- exports.SqliteTableQueryCompiler = SqliteTableQueryCompiler;
90
- let SqliteColumnCompiler = class SqliteColumnCompiler extends orm_sql_1.SqlColumnQueryCompiler {
91
- compile() {
92
- const _stmt = [];
93
- _stmt.push(`\`${this.builder.Name}\``);
94
- switch (this.builder.Type) {
95
- case "string":
96
- case "text":
97
- case "mediumtext":
98
- case "tinytext":
99
- case "longtext":
100
- case "date":
101
- case "dateTime":
102
- case "time":
103
- _stmt.push(`TEXT`);
104
- break;
105
- case "float":
106
- case "double":
107
- _stmt.push(`REAL`);
108
- break;
109
- case "decimal":
110
- _stmt.push(`DECIMAL`);
111
- break;
112
- case "int":
113
- case "tinyint":
114
- case "smallint":
115
- case "mediumint":
116
- case "bigint":
117
- case "boolean":
118
- _stmt.push("INTEGER");
119
- break;
120
- }
121
- if (this.builder.Unsigned) {
122
- _stmt.push("UNSIGNED");
123
- }
124
- if (this.builder.Charset) {
125
- _stmt.push(`CHARACTER SET '${this.builder.Charset}'`);
126
- }
127
- if (this.builder.Collation) {
128
- _stmt.push(`COLLATE '${this.builder.Collation}'`);
129
- }
130
- if (this.builder.NotNull) {
131
- _stmt.push("NOT NULL");
132
- }
133
- if (this.builder.Default) {
134
- _stmt.push(this._defaultCompiler());
135
- }
136
- if (this.builder.Comment) {
137
- _stmt.push(`COMMENT '${this.builder.Comment}'`);
138
- }
139
- if (this.builder.PrimaryKey) {
140
- _stmt.push(`PRIMARY KEY`);
141
- }
142
- ;
143
- if (this.builder.AutoIncrement) {
144
- _stmt.push(`AUTOINCREMENT`);
145
- }
146
- if (this.builder.Unique) {
147
- _stmt.push("UNIQUE");
148
- }
149
- return {
150
- bindings: [],
151
- expression: _stmt.filter(x => !_.isEmpty(x)).join(" "),
152
- };
153
- }
154
- };
155
- SqliteColumnCompiler = __decorate([
156
- di_1.NewInstance()
157
- ], SqliteColumnCompiler);
158
- exports.SqliteColumnCompiler = SqliteColumnCompiler;
159
- //# sourceMappingURL=compilers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"compilers.js","sourceRoot":"","sources":["../src/compilers.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- import { IValueConverter } from "@spinajs/orm";
2
- export declare class DateTimeConverter implements IValueConverter {
3
- toDB(value: Date): string;
4
- fromDB(value: string): Date;
5
- }
package/lib/converters.js DELETED
@@ -1,12 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- class DateTimeConverter {
4
- toDB(value) {
5
- return value.toISOString();
6
- }
7
- fromDB(value) {
8
- return new Date(value);
9
- }
10
- }
11
- exports.DateTimeConverter = DateTimeConverter;
12
- //# sourceMappingURL=converters.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"converters.js","sourceRoot":"","sources":["../src/converters.ts"],"names":[],"mappings":";;AAEA,MAAa,iBAAiB;IACnB,IAAI,CAAC,KAAW;QACnB,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;IAC/B,CAAC;IAEM,MAAM,CAAC,KAAa;QACvB,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;CAGJ;AAVD,8CAUC"}
@@ -1 +0,0 @@
1
- export declare function Datetime(): any;
package/lib/decorators.js DELETED
@@ -1,32 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const orm_1 = require("@spinajs/orm");
4
- const converters_1 = require("./converters");
5
- function Datetime() {
6
- return orm_1.extractDecoratorDescriptor((model, target, propertyKey) => {
7
- const type = Reflect.getMetadata('design:type', target, propertyKey);
8
- if (type.name !== "Date") {
9
- throw Error(`Proprety ${propertyKey} must be Date type`);
10
- }
11
- if (!model.Columns) {
12
- model.Columns = [];
13
- }
14
- model.Columns.push({
15
- Type: "TEXT",
16
- MaxLength: 0,
17
- Comment: "",
18
- DefaultValue: null,
19
- NativeType: "TEXT",
20
- Unsigned: false,
21
- Nullable: true,
22
- PrimaryKey: false,
23
- AutoIncrement: false,
24
- Name: "CreatedAt",
25
- Converter: new converters_1.DateTimeConverter(),
26
- Schema: "test",
27
- Unique: false
28
- });
29
- }, true);
30
- }
31
- exports.Datetime = Datetime;
32
- //# sourceMappingURL=decorators.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../src/decorators.ts"],"names":[],"mappings":";;AAAA,sCAA6E;AAC7E,6CAAiD;AAEjD,SAAgB,QAAQ;IACpB,OAAO,gCAA0B,CAAC,CAAC,KAAwB,EAAE,MAAW,EAAE,WAAmB,EAAE,EAAE;QAC7F,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,aAAa,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QACrE,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;YACtB,MAAM,KAAK,CAAC,aAAa,WAAW,oBAAoB,CAAC,CAAC;SAC7D;QAED,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;YAChB,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;SACtB;QAED,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YACf,IAAI,EAAE,MAAM;YACZ,SAAS,EAAE,CAAC;YACZ,OAAO,EAAE,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,UAAU,EAAE,MAAM;YAClB,QAAQ,EAAE,KAAK;YACf,QAAQ,EAAE,IAAI;YACd,UAAU,EAAE,KAAK;YACjB,aAAa,EAAE,KAAK;YACpB,IAAI,EAAE,WAAW;YACjB,SAAS,EAAE,IAAI,8BAAiB,EAAE;YAClC,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,KAAK;SAChB,CAAC,CAAA;IAEN,CAAC,EAAE,IAAI,CAAC,CAAC;AACb,CAAC;AA5BD,4BA4BC"}
package/lib/index.d.ts DELETED
@@ -1,25 +0,0 @@
1
- export * from "./compilers";
2
- export * from "./converters";
3
- export * from "./decorators";
4
- import { IColumnDescriptor, QueryContext, OrmDriver, QueryBuilder, TransactionCallback } from "@spinajs/orm";
5
- import { Database } from "sqlite3";
6
- import { SqlDriver } from "@spinajs/orm-sql";
7
- import { Container } from "@spinajs/di";
8
- export declare class SqliteOrmDriver extends SqlDriver {
9
- protected Db: Database;
10
- execute(stmt: string, params: any[], queryContext: QueryContext): Promise<any>;
11
- ping(): Promise<boolean>;
12
- connect(): Promise<OrmDriver>;
13
- disconnect(): Promise<OrmDriver>;
14
- resolve(container: Container): Promise<void>;
15
- transaction(qrOrCallback: QueryBuilder[] | TransactionCallback): Promise<void>;
16
- /**
17
- *
18
- * Retrieves information about specific DB table if exists. If table not exists returns null
19
- *
20
- * @param name table name to retrieve info
21
- * @param _schema - optional schema name
22
- * @returns {[] | null}
23
- */
24
- tableInfo(name: string, _schema?: string): Promise<IColumnDescriptor[]>;
25
- }
package/lib/index.js DELETED
@@ -1,164 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- 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;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- function __export(m) {
9
- for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
10
- }
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- __export(require("./compilers"));
13
- __export(require("./converters"));
14
- __export(require("./decorators"));
15
- const orm_1 = require("@spinajs/orm");
16
- const sqlite3_1 = require("sqlite3");
17
- const orm_sql_1 = require("@spinajs/orm-sql");
18
- const di_1 = require("@spinajs/di");
19
- const compilers_1 = require("./compilers");
20
- const statements_1 = require("./statements");
21
- let SqliteOrmDriver = class SqliteOrmDriver extends orm_sql_1.SqlDriver {
22
- execute(stmt, params, queryContext) {
23
- const queryParams = (params !== null && params !== void 0 ? params : []);
24
- if (!this.Db) {
25
- throw new Error("cannot execute sqlite statement, no db connection avaible");
26
- }
27
- super.execute(stmt, queryParams, queryContext);
28
- return new Promise((res, rej) => {
29
- switch (queryContext) {
30
- case orm_1.QueryContext.Update:
31
- case orm_1.QueryContext.Delete:
32
- case orm_1.QueryContext.Schema:
33
- case orm_1.QueryContext.Transaction:
34
- this.Db.run(stmt, ...queryParams, (err, data) => {
35
- if (err) {
36
- rej(err);
37
- return;
38
- }
39
- res(data);
40
- });
41
- break;
42
- case orm_1.QueryContext.Select:
43
- this.Db.all(stmt, ...queryParams, (err, rows) => {
44
- if (err) {
45
- rej(err);
46
- return;
47
- }
48
- res(rows);
49
- });
50
- break;
51
- case orm_1.QueryContext.Insert:
52
- this.Db.run(stmt, ...queryParams, function (err) {
53
- if (err) {
54
- rej(err);
55
- return;
56
- }
57
- res(this.lastID);
58
- });
59
- break;
60
- }
61
- });
62
- }
63
- async ping() {
64
- return this.Db !== null && this.Db !== undefined;
65
- }
66
- async connect() {
67
- return new Promise((resolve, reject) => {
68
- this.Db = new sqlite3_1.Database(this.Options.Filename, (err) => {
69
- if (err) {
70
- reject(err);
71
- return;
72
- }
73
- resolve(this);
74
- });
75
- });
76
- }
77
- async disconnect() {
78
- return new Promise((res, rej) => {
79
- this.Db.close((err) => {
80
- if (err) {
81
- rej(err);
82
- return;
83
- }
84
- this.Db = null;
85
- res(this);
86
- });
87
- });
88
- }
89
- async resolve(container) {
90
- super.resolve(container);
91
- this.Container = this.Container.child();
92
- this.Container.register(compilers_1.SqliteColumnCompiler).as(orm_1.ColumnQueryCompiler);
93
- this.Container.register(compilers_1.SqliteTableQueryCompiler).as(orm_1.TableQueryCompiler);
94
- this.Container.register(compilers_1.SqliteOrderByCompiler).as(orm_1.OrderByQueryCompiler);
95
- this.Container.register(statements_1.SqlLiteJoinStatement).as(orm_1.JoinStatement);
96
- this.Container.register(compilers_1.SqliteOnDuplicateQueryCompiler).as(orm_1.OnDuplicateQueryCompiler);
97
- }
98
- async transaction(qrOrCallback) {
99
- if (!qrOrCallback) {
100
- return;
101
- }
102
- await this.execute("BEGIN TRANSACTION", null, orm_1.QueryContext.Transaction);
103
- try {
104
- if (Array.isArray(qrOrCallback)) {
105
- for (const q of qrOrCallback) {
106
- await q;
107
- }
108
- }
109
- else {
110
- await qrOrCallback(this);
111
- }
112
- await this.execute("COMMIT", null, orm_1.QueryContext.Transaction);
113
- }
114
- catch (ex) {
115
- await this.execute("ROLLBACK", null, orm_1.QueryContext.Transaction);
116
- throw ex;
117
- }
118
- }
119
- /**
120
- *
121
- * Retrieves information about specific DB table if exists. If table not exists returns null
122
- *
123
- * @param name table name to retrieve info
124
- * @param _schema - optional schema name
125
- * @returns {[] | null}
126
- */
127
- async tableInfo(name, _schema) {
128
- const tblInfo = await this.execute(`PRAGMA table_info(${name});`, null, orm_1.QueryContext.Select);
129
- const indexInfo = await this.execute("select type, name, tbl_name, sql FROM sqlite_master WHERE type='index'", null, orm_1.QueryContext.Select);
130
- const re = /\((.*?)\)/;
131
- const indices = indexInfo.map((i) => {
132
- var _a;
133
- return {
134
- table: i.tbl_name,
135
- column_name: (_a = i.sql) === null || _a === void 0 ? void 0 : _a.match(re)[0]
136
- };
137
- });
138
- if (!Array.isArray(tblInfo) || tblInfo.length === 0) {
139
- return null;
140
- }
141
- return tblInfo.map((r) => {
142
- return {
143
- Type: r.type,
144
- MaxLength: -1,
145
- Comment: "",
146
- DefaultValue: r.dflt_value,
147
- NativeType: r.type,
148
- Unsigned: false,
149
- Nullable: r.notnull === 1,
150
- PrimaryKey: r.pk === 1,
151
- AutoIncrement: false,
152
- Name: r.name,
153
- Converter: null,
154
- Schema: _schema ? _schema : this.Options.Database,
155
- Unique: indices.find(i => i.column_name === r.name && i.table === name) !== undefined
156
- };
157
- });
158
- }
159
- };
160
- SqliteOrmDriver = __decorate([
161
- di_1.Injectable("orm-driver-sqlite")
162
- ], SqliteOrmDriver);
163
- exports.SqliteOrmDriver = SqliteOrmDriver;
164
- //# sourceMappingURL=index.js.map
package/lib/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,iCAA4B;AAC5B,kCAA6B;AAC7B,kCAA6B;AAE7B,sCAAqN;AACrN,qCAAmC;AACnC,8CAA6C;AAC7C,oCAAoD;AACpD,2CAAoI;AACpI,6CAAoD;AAGpD,IAAa,eAAe,GAA5B,MAAa,eAAgB,SAAQ,mBAAS;IAInC,OAAO,CAAC,IAAY,EAAE,MAAa,EAAE,YAA0B;QAElE,MAAM,WAAW,IAAG,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,EAAE,CAAA,CAAC;QAEjC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;YACV,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;SAChF;QAED,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;QAE/C,OAAO,IAAI,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAE5B,QAAQ,YAAY,EAAE;gBAClB,KAAK,kBAAY,CAAC,MAAM,CAAC;gBACzB,KAAK,kBAAY,CAAC,MAAM,CAAC;gBACzB,KAAK,kBAAY,CAAC,MAAM,CAAC;gBACzB,KAAK,kBAAY,CAAC,WAAW;oBACzB,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,WAAW,EAAE,CAAC,GAAQ,EAAE,IAAS,EAAE,EAAE;wBACtD,IAAI,GAAG,EAAE;4BACL,GAAG,CAAC,GAAG,CAAC,CAAC;4BACT,OAAO;yBACV;wBAED,GAAG,CAAC,IAAI,CAAC,CAAC;oBACd,CAAC,CAAC,CAAC;oBACH,MAAM;gBACV,KAAK,kBAAY,CAAC,MAAM;oBACpB,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,WAAW,EAAE,CAAC,GAAQ,EAAE,IAAS,EAAE,EAAE;wBACtD,IAAI,GAAG,EAAE;4BACL,GAAG,CAAC,GAAG,CAAC,CAAC;4BACT,OAAO;yBACV;wBAED,GAAG,CAAC,IAAI,CAAC,CAAC;oBACd,CAAC,CAAC,CAAC;oBACH,MAAM;gBACV,KAAK,kBAAY,CAAC,MAAM;oBACpB,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,WAAW,EAAE,UAAU,GAAQ;wBAChD,IAAI,GAAG,EAAE;4BACL,GAAG,CAAC,GAAG,CAAC,CAAC;4BACT,OAAO;yBACV;wBAED,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBACrB,CAAC,CAAC,CAAC;oBACH,MAAM;aACb;QAGL,CAAC,CAAC,CAAC;IACP,CAAC;IAEM,KAAK,CAAC,IAAI;QACb,OAAO,IAAI,CAAC,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,SAAS,CAAC;IACrD,CAAC;IAEM,KAAK,CAAC,OAAO;QAEhB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,IAAI,CAAC,EAAE,GAAG,IAAI,kBAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE;gBAClD,IAAI,GAAG,EAAE;oBACL,MAAM,CAAC,GAAG,CAAC,CAAC;oBACZ,OAAO;iBACV;gBAID,OAAO,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAEM,KAAK,CAAC,UAAU;QACnB,OAAO,IAAI,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAC5B,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBAClB,IAAI,GAAG,EAAE;oBACL,GAAG,CAAC,GAAG,CAAC,CAAC;oBACT,OAAO;iBACV;gBAED,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;gBACf,GAAG,CAAC,IAAI,CAAC,CAAC;YACd,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAA;IACN,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,SAAoB;QACrC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAEzB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACxC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,gCAAoB,CAAC,CAAC,EAAE,CAAC,yBAAmB,CAAC,CAAC;QACtE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,oCAAwB,CAAC,CAAC,EAAE,CAAC,wBAAkB,CAAC,CAAC;QACzE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,iCAAqB,CAAC,CAAC,EAAE,CAAC,0BAAoB,CAAC,CAAC;QACxE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,iCAAoB,CAAC,CAAC,EAAE,CAAC,mBAAa,CAAC,CAAC;QAChE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,0CAA8B,CAAC,CAAC,EAAE,CAAC,8BAAwB,CAAC,CAAC;IAEzF,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,YAAkD;QAEvE,IAAI,CAAC,YAAY,EAAE;YACf,OAAO;SACV;QAED,MAAM,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,IAAI,EAAE,kBAAY,CAAC,WAAW,CAAC,CAAC;QAExE,IAAI;YAEA,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;gBAC7B,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE;oBAC1B,MAAM,CAAC,CAAC;iBACX;aACJ;iBAAM;gBACH,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;aAC5B;YAED,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,kBAAY,CAAC,WAAW,CAAC,CAAC;SAEhE;QAAC,OAAO,EAAE,EAAE;YACT,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,EAAE,kBAAY,CAAC,WAAW,CAAC,CAAC;YAC/D,MAAM,EAAE,CAAC;SACZ;IACL,CAAC;IAGD;;;;;;;OAOG;IACI,KAAK,CAAC,SAAS,CAAC,IAAY,EAAE,OAAgB;QAEjD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,qBAAqB,IAAI,IAAI,EAAE,IAAI,EAAE,kBAAY,CAAC,MAAM,CAAO,CAAC;QAEnG,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,wEAAwE,EAAE,IAAI,EAAE,kBAAY,CAAC,MAAM,CAAO,CAAC;QAEhJ,MAAM,EAAE,GAAG,WAAW,CAAC;QACvB,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE;;YACrC,OAAO;gBACH,KAAK,EAAE,CAAC,CAAC,QAAQ;gBACjB,WAAW,QAAE,CAAC,CAAC,GAAG,0CAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;aACnC,CAAC;QACN,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;YACjD,OAAO,IAAI,CAAC;SACf;QAED,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE;YAC1B,OAAO;gBACH,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,SAAS,EAAE,CAAC,CAAC;gBACb,OAAO,EAAE,EAAE;gBACX,YAAY,EAAE,CAAC,CAAC,UAAU;gBAC1B,UAAU,EAAE,CAAC,CAAC,IAAI;gBAClB,QAAQ,EAAE,KAAK;gBACf,QAAQ,EAAE,CAAC,CAAC,OAAO,KAAK,CAAC;gBACzB,UAAU,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC;gBACtB,aAAa,EAAE,KAAK;gBACpB,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,SAAS,EAAE,IAAI;gBACf,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ;gBACjD,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,SAAS;aACxF,CAAA;QACL,CAAC,CAAC,CAAC;IACP,CAAC;CACJ,CAAA;AA7KY,eAAe;IAD3B,eAAU,CAAC,mBAAmB,CAAC;GACnB,eAAe,CA6K3B;AA7KY,0CAAe"}
@@ -1,7 +0,0 @@
1
- import { IQueryStatementResult, RawQuery } from "@spinajs/orm";
2
- import { SqlJoinStatement } from "@spinajs/orm-sql";
3
- import { JoinMethod } from "@spinajs/orm/lib/enums";
4
- export declare class SqlLiteJoinStatement extends SqlJoinStatement {
5
- constructor(table: string | RawQuery, method: JoinMethod, foreignKey: string, primaryKey: string);
6
- build(): IQueryStatementResult;
7
- }
package/lib/statements.js DELETED
@@ -1,36 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- 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;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- const di_1 = require("@spinajs/di");
13
- const orm_sql_1 = require("@spinajs/orm-sql");
14
- const enums_1 = require("@spinajs/orm/lib/enums");
15
- const exceptions_1 = require("@spinajs/exceptions");
16
- let SqlLiteJoinStatement = class SqlLiteJoinStatement extends orm_sql_1.SqlJoinStatement {
17
- constructor(table, method, foreignKey, primaryKey) {
18
- super(table, method, foreignKey, primaryKey);
19
- if (method === enums_1.JoinMethod.RIGHT || method === enums_1.JoinMethod.RIGHT_OUTER || method === enums_1.JoinMethod.INNER || method === enums_1.JoinMethod.FULL_OUTER) {
20
- throw new exceptions_1.NotSupportedException(`join method ${method} is not supported by sqlite driver`);
21
- }
22
- }
23
- build() {
24
- return {
25
- Bindings: [],
26
- Statements: [`\`${this._method}\` ${this._table} ON ${this._primaryKey} = ${this._foreignKey} `]
27
- };
28
- }
29
- };
30
- SqlLiteJoinStatement = __decorate([
31
- di_1.NewInstance(),
32
- di_1.NewInstance(),
33
- __metadata("design:paramtypes", [Object, String, String, String])
34
- ], SqlLiteJoinStatement);
35
- exports.SqlLiteJoinStatement = SqlLiteJoinStatement;
36
- //# sourceMappingURL=statements.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"statements.js","sourceRoot":"","sources":["../src/statements.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,oCAA0C;AAE1C,8CAAoD;AACpD,kDAAoD;AACpD,oDAA4D;AAI5D,IAAa,oBAAoB,GAAjC,MAAa,oBAAqB,SAAQ,0BAAgB;IAEtD,YAAY,KAAwB,EAAE,MAAkB,EAAE,UAAkB,EAAE,UAAkB;QAC5F,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QAE7C,IAAI,MAAM,KAAK,kBAAU,CAAC,KAAK,IAAI,MAAM,KAAK,kBAAU,CAAC,WAAW,IAAI,MAAM,KAAK,kBAAU,CAAC,KAAK,IAAI,MAAM,KAAK,kBAAU,CAAC,UAAU,EAAE;YACrI,MAAM,IAAI,kCAAqB,CAAC,eAAe,MAAM,oCAAoC,CAAC,CAAC;SAC9F;IACL,CAAC;IAEM,KAAK;QACR,OAAO;YACH,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,CAAC,KAAK,IAAI,CAAC,OAAO,MAAM,IAAI,CAAC,MAAM,OAAO,IAAI,CAAC,WAAW,MAAM,IAAI,CAAC,WAAW,GAAG,CAAC;SACnG,CAAA;IACL,CAAC;CACJ,CAAA;AAhBY,oBAAoB;IAFhC,gBAAW,EAAE;IACb,gBAAW,EAAE;;GACD,oBAAoB,CAgBhC;AAhBY,oDAAoB"}