namirasoft-node-sequelize 1.4.2 → 1.4.3
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/dist/BaseSequelizeDatabase.d.ts +10 -1
- package/dist/BaseSequelizeDatabase.js +13 -0
- package/dist/BaseSequelizeDatabase.js.map +1 -1
- package/package.json +3 -3
- package/src/BaseDB2Database.ts +8 -8
- package/src/BaseFilterItemBuilderSequelize.ts +123 -123
- package/src/BaseMSSQLDatabase.ts +8 -8
- package/src/BaseMariaDBDatabase.ts +8 -8
- package/src/BaseMySqlDatabase.ts +8 -8
- package/src/BaseOracleDatabase.ts +8 -8
- package/src/BasePostgreSQLDatabase.ts +8 -8
- package/src/BaseSQLiteDatabase.ts +8 -8
- package/src/BaseSequelizeDatabase.ts +135 -114
- package/src/BaseSequelizeModel.ts +4 -4
- package/src/BaseSequelizeModelAttributeColumnOptions.ts +10 -10
- package/src/BaseSequelizeModelAttributes.ts +5 -5
- package/src/BaseSequelizeTable.ts +274 -274
- package/src/BaseSnowFlakeDatabase.ts +8 -8
- package/src/index.ts +13 -13
|
@@ -1,8 +1,14 @@
|
|
|
1
|
-
import { Transaction } from 'sequelize';
|
|
2
1
|
import { Sequelize, Dialect, WhereOptions, Order } from "sequelize";
|
|
3
2
|
import { BaseDatabase, BaseFilterItemBuilder_JoinTable } from "namirasoft-node";
|
|
4
3
|
import { FilterItem, SortItem } from "namirasoft-core";
|
|
5
4
|
import { BaseSequelizeTable } from "./BaseSequelizeTable";
|
|
5
|
+
import { BaseApplication } from "namirasoft-node";
|
|
6
|
+
import { Transaction } from "sequelize";
|
|
7
|
+
export interface BaseSequelizeDatabaseSeedable<Model> {
|
|
8
|
+
getOrNull(id: string | undefined, trx: Transaction | null): Promise<Model | null>;
|
|
9
|
+
create(product: Model, trx: Transaction | null): Promise<Model>;
|
|
10
|
+
update(product: Model, trx: Transaction | null): Promise<number[]>;
|
|
11
|
+
}
|
|
6
12
|
export declare abstract class BaseSequelizeDatabase extends BaseDatabase {
|
|
7
13
|
sequelize: Sequelize;
|
|
8
14
|
private dialect;
|
|
@@ -16,4 +22,7 @@ export declare abstract class BaseSequelizeDatabase extends BaseDatabase {
|
|
|
16
22
|
}, filters?: FilterItem[] | undefined): Promise<WhereOptions[]>;
|
|
17
23
|
getAdvancedSearchConditions(columns: string[], search: string): WhereOptions[];
|
|
18
24
|
getSortOptions(sorts?: SortItem[] | undefined): Order;
|
|
25
|
+
protected sead<Model extends {
|
|
26
|
+
id: string;
|
|
27
|
+
}>(app: BaseApplication<any>, file_path: string, seedable_table: BaseSequelizeDatabaseSeedable<Model>): Promise<void>;
|
|
19
28
|
}
|
|
@@ -98,6 +98,19 @@ class BaseSequelizeDatabase extends namirasoft_node_1.BaseDatabase {
|
|
|
98
98
|
});
|
|
99
99
|
return ans;
|
|
100
100
|
}
|
|
101
|
+
sead(app, file_path, seedable_table) {
|
|
102
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
103
|
+
let items = app.read(file_path);
|
|
104
|
+
for (let i = 0; i < items.length; i++) {
|
|
105
|
+
const item = items[i];
|
|
106
|
+
let product = yield seedable_table.getOrNull(item.id, null);
|
|
107
|
+
if (product === null)
|
|
108
|
+
yield seedable_table.create(item, null);
|
|
109
|
+
else
|
|
110
|
+
yield seedable_table.update(item, null);
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
}
|
|
101
114
|
}
|
|
102
115
|
exports.BaseSequelizeDatabase = BaseSequelizeDatabase;
|
|
103
116
|
//# sourceMappingURL=BaseSequelizeDatabase.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseSequelizeDatabase.js","sourceRoot":"","sources":["../src/BaseSequelizeDatabase.ts"],"names":[],"mappings":";;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"BaseSequelizeDatabase.js","sourceRoot":"","sources":["../src/BaseSequelizeDatabase.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"framework": "npm",
|
|
9
9
|
"application": "package",
|
|
10
10
|
"private": false,
|
|
11
|
-
"version": "1.4.
|
|
11
|
+
"version": "1.4.3",
|
|
12
12
|
"author": "Amir Abolhasani",
|
|
13
13
|
"license": "MIT",
|
|
14
14
|
"main": "./dist/index.js",
|
|
@@ -18,8 +18,8 @@
|
|
|
18
18
|
},
|
|
19
19
|
"dependencies": {
|
|
20
20
|
"@types/node": "^24.1.0",
|
|
21
|
-
"namirasoft-core": "^1.4.
|
|
22
|
-
"namirasoft-node": "^1.4.
|
|
21
|
+
"namirasoft-core": "^1.4.79",
|
|
22
|
+
"namirasoft-node": "^1.4.106",
|
|
23
23
|
"sequelize": "^6.37.7"
|
|
24
24
|
}
|
|
25
25
|
}
|
package/src/BaseDB2Database.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { BaseSequelizeDatabase } from "./BaseSequelizeDatabase";
|
|
2
|
-
|
|
3
|
-
export abstract class BaseDB2Database extends BaseSequelizeDatabase
|
|
4
|
-
{
|
|
5
|
-
constructor(host: string, port: number, name: string, user: string, pass: string, logging: boolean = false)
|
|
6
|
-
{
|
|
7
|
-
super('db2', host, port, name, user, pass, logging);
|
|
8
|
-
}
|
|
1
|
+
import { BaseSequelizeDatabase } from "./BaseSequelizeDatabase";
|
|
2
|
+
|
|
3
|
+
export abstract class BaseDB2Database extends BaseSequelizeDatabase
|
|
4
|
+
{
|
|
5
|
+
constructor(host: string, port: number, name: string, user: string, pass: string, logging: boolean = false)
|
|
6
|
+
{
|
|
7
|
+
super('db2', host, port, name, user, pass, logging);
|
|
8
|
+
}
|
|
9
9
|
}
|
|
@@ -1,124 +1,124 @@
|
|
|
1
|
-
import sequelize, { Op, WhereOptions } from "sequelize";
|
|
2
|
-
import { BaseFilterItemBuilder_JoinTable, BaseFilterItemBuilderDatabase } from "namirasoft-node";
|
|
3
|
-
import { BaseSequelizeTable } from "./BaseSequelizeTable";
|
|
4
|
-
import { BaseSequelizeDatabase } from "./BaseSequelizeDatabase";
|
|
5
|
-
|
|
6
|
-
export class BaseFilterItemBuilderSequelize extends BaseFilterItemBuilderDatabase<WhereOptions>
|
|
7
|
-
{
|
|
8
|
-
override escapeValue(value: string)
|
|
9
|
-
{
|
|
10
|
-
return value;
|
|
11
|
-
}
|
|
12
|
-
override async getAdvancedSearchConditions(columns: string[], search: string)
|
|
13
|
-
{
|
|
14
|
-
let database = this.database as BaseSequelizeDatabase;
|
|
15
|
-
return database.getAdvancedSearchConditions(columns, search);
|
|
16
|
-
}
|
|
17
|
-
override getIn(column_name: string, not: boolean, values: string[])
|
|
18
|
-
{
|
|
19
|
-
let condition: WhereOptions = {};
|
|
20
|
-
condition[column_name] = not ? { [Op.notIn]: values } : { [Op.in]: values };
|
|
21
|
-
return { condition };
|
|
22
|
-
}
|
|
23
|
-
override getLike(column_name: string, not: boolean, value: string)
|
|
24
|
-
{
|
|
25
|
-
let condition: WhereOptions = {};
|
|
26
|
-
condition[column_name] = not ? { [Op.notLike]: `%${value}%` } : { [Op.like]: `%${value}%` };
|
|
27
|
-
return { condition };
|
|
28
|
-
}
|
|
29
|
-
override getRegex(column_name: string, not: boolean, value: string)
|
|
30
|
-
{
|
|
31
|
-
let condition: WhereOptions = {};
|
|
32
|
-
condition[column_name] = not ? { [Op.notRegexp]: value } : { [Op.regexp]: value };
|
|
33
|
-
return { condition };
|
|
34
|
-
}
|
|
35
|
-
override getEmpty(column_name: string, not: boolean)
|
|
36
|
-
{
|
|
37
|
-
let condition: WhereOptions = {};
|
|
38
|
-
if (!not)
|
|
39
|
-
{
|
|
40
|
-
condition = {
|
|
41
|
-
[Op.or]: [
|
|
42
|
-
{ [column_name]: { [Op.is]: null } },
|
|
43
|
-
{ [column_name]: '' }
|
|
44
|
-
]
|
|
45
|
-
} as WhereOptions;
|
|
46
|
-
}
|
|
47
|
-
else
|
|
48
|
-
condition[column_name] = { [Op.and]: [{ [Op.ne]: null }, { [Op.ne]: '' }] };
|
|
49
|
-
return { condition };
|
|
50
|
-
}
|
|
51
|
-
override getExists(column_name: string, not: boolean)
|
|
52
|
-
{
|
|
53
|
-
let condition: WhereOptions = {};
|
|
54
|
-
condition[column_name] = { [Op.and]: [{ [Op.ne]: null }, { [Op.ne]: '' }] };
|
|
55
|
-
if (!not)
|
|
56
|
-
return { condition };
|
|
57
|
-
return { condition, independant: { not } };
|
|
58
|
-
}
|
|
59
|
-
override getIncludes(column_name: string, not: boolean, values: string[])
|
|
60
|
-
{
|
|
61
|
-
let condition: WhereOptions = {};
|
|
62
|
-
condition[column_name] = { [Op.in]: values };
|
|
63
|
-
if (!not)
|
|
64
|
-
return { condition };
|
|
65
|
-
return { condition, independant: { not } };
|
|
66
|
-
}
|
|
67
|
-
override getStartsWith(column_name: string, not: boolean, value: string)
|
|
68
|
-
{
|
|
69
|
-
let condition: WhereOptions = {};
|
|
70
|
-
condition[column_name] = not ? { [Op.notLike]: `${value}%` } : { [Op.like]: `${value}%` };
|
|
71
|
-
return { condition };
|
|
72
|
-
}
|
|
73
|
-
override getEndsWith(column_name: string, not: boolean, value: string)
|
|
74
|
-
{
|
|
75
|
-
let condition: WhereOptions = {};
|
|
76
|
-
condition[column_name] = not ? { [Op.notLike]: `%${value}` } : { [Op.like]: `%${value}` };
|
|
77
|
-
return { condition };
|
|
78
|
-
}
|
|
79
|
-
override getLT(column_name: string, value: any)
|
|
80
|
-
{
|
|
81
|
-
let condition: WhereOptions = {};
|
|
82
|
-
condition[column_name] = { [Op.lt]: value };
|
|
83
|
-
return { condition };
|
|
84
|
-
}
|
|
85
|
-
override getLTE(column_name: string, value: any)
|
|
86
|
-
{
|
|
87
|
-
let condition: WhereOptions = {};
|
|
88
|
-
condition[column_name] = { [Op.lte]: value };
|
|
89
|
-
return { condition };
|
|
90
|
-
}
|
|
91
|
-
override getGT(column_name: string, value: any)
|
|
92
|
-
{
|
|
93
|
-
let condition: WhereOptions = {};
|
|
94
|
-
condition[column_name] = { [Op.gt]: value };
|
|
95
|
-
return { condition };
|
|
96
|
-
}
|
|
97
|
-
override getGTE(column_name: string, value: any)
|
|
98
|
-
{
|
|
99
|
-
let condition: WhereOptions = {};
|
|
100
|
-
condition[column_name] = { [Op.gte]: value };
|
|
101
|
-
return { condition };
|
|
102
|
-
}
|
|
103
|
-
override async getInSelect(table_name: string, not: boolean, join: BaseFilterItemBuilder_JoinTable<WhereOptions>, conditions: WhereOptions[])
|
|
104
|
-
{
|
|
105
|
-
let select = await new Promise<string>(resolve =>
|
|
106
|
-
{
|
|
107
|
-
let t = this.database.getTable(table_name);
|
|
108
|
-
let table = t as BaseSequelizeTable<BaseSequelizeDatabase, any>;
|
|
109
|
-
table.model.findAll({
|
|
110
|
-
where: { [Op.and]: conditions },
|
|
111
|
-
attributes: [join.secondary.column],
|
|
112
|
-
logging(sql)
|
|
113
|
-
{
|
|
114
|
-
let q = sql.substring(sql.indexOf("SELECT"));
|
|
115
|
-
if (q.endsWith(";"))
|
|
116
|
-
q = q.slice(0, -1);
|
|
117
|
-
resolve(q);
|
|
118
|
-
},
|
|
119
|
-
});
|
|
120
|
-
});
|
|
121
|
-
let query = `${join.main.column} ${not ? "NOT" : ""} IN (${select})`;
|
|
122
|
-
return sequelize.literal(query);
|
|
123
|
-
}
|
|
1
|
+
import sequelize, { Op, WhereOptions } from "sequelize";
|
|
2
|
+
import { BaseFilterItemBuilder_JoinTable, BaseFilterItemBuilderDatabase } from "namirasoft-node";
|
|
3
|
+
import { BaseSequelizeTable } from "./BaseSequelizeTable";
|
|
4
|
+
import { BaseSequelizeDatabase } from "./BaseSequelizeDatabase";
|
|
5
|
+
|
|
6
|
+
export class BaseFilterItemBuilderSequelize extends BaseFilterItemBuilderDatabase<WhereOptions>
|
|
7
|
+
{
|
|
8
|
+
override escapeValue(value: string)
|
|
9
|
+
{
|
|
10
|
+
return value;
|
|
11
|
+
}
|
|
12
|
+
override async getAdvancedSearchConditions(columns: string[], search: string)
|
|
13
|
+
{
|
|
14
|
+
let database = this.database as BaseSequelizeDatabase;
|
|
15
|
+
return database.getAdvancedSearchConditions(columns, search);
|
|
16
|
+
}
|
|
17
|
+
override getIn(column_name: string, not: boolean, values: string[])
|
|
18
|
+
{
|
|
19
|
+
let condition: WhereOptions = {};
|
|
20
|
+
condition[column_name] = not ? { [Op.notIn]: values } : { [Op.in]: values };
|
|
21
|
+
return { condition };
|
|
22
|
+
}
|
|
23
|
+
override getLike(column_name: string, not: boolean, value: string)
|
|
24
|
+
{
|
|
25
|
+
let condition: WhereOptions = {};
|
|
26
|
+
condition[column_name] = not ? { [Op.notLike]: `%${value}%` } : { [Op.like]: `%${value}%` };
|
|
27
|
+
return { condition };
|
|
28
|
+
}
|
|
29
|
+
override getRegex(column_name: string, not: boolean, value: string)
|
|
30
|
+
{
|
|
31
|
+
let condition: WhereOptions = {};
|
|
32
|
+
condition[column_name] = not ? { [Op.notRegexp]: value } : { [Op.regexp]: value };
|
|
33
|
+
return { condition };
|
|
34
|
+
}
|
|
35
|
+
override getEmpty(column_name: string, not: boolean)
|
|
36
|
+
{
|
|
37
|
+
let condition: WhereOptions = {};
|
|
38
|
+
if (!not)
|
|
39
|
+
{
|
|
40
|
+
condition = {
|
|
41
|
+
[Op.or]: [
|
|
42
|
+
{ [column_name]: { [Op.is]: null } },
|
|
43
|
+
{ [column_name]: '' }
|
|
44
|
+
]
|
|
45
|
+
} as WhereOptions;
|
|
46
|
+
}
|
|
47
|
+
else
|
|
48
|
+
condition[column_name] = { [Op.and]: [{ [Op.ne]: null }, { [Op.ne]: '' }] };
|
|
49
|
+
return { condition };
|
|
50
|
+
}
|
|
51
|
+
override getExists(column_name: string, not: boolean)
|
|
52
|
+
{
|
|
53
|
+
let condition: WhereOptions = {};
|
|
54
|
+
condition[column_name] = { [Op.and]: [{ [Op.ne]: null }, { [Op.ne]: '' }] };
|
|
55
|
+
if (!not)
|
|
56
|
+
return { condition };
|
|
57
|
+
return { condition, independant: { not } };
|
|
58
|
+
}
|
|
59
|
+
override getIncludes(column_name: string, not: boolean, values: string[])
|
|
60
|
+
{
|
|
61
|
+
let condition: WhereOptions = {};
|
|
62
|
+
condition[column_name] = { [Op.in]: values };
|
|
63
|
+
if (!not)
|
|
64
|
+
return { condition };
|
|
65
|
+
return { condition, independant: { not } };
|
|
66
|
+
}
|
|
67
|
+
override getStartsWith(column_name: string, not: boolean, value: string)
|
|
68
|
+
{
|
|
69
|
+
let condition: WhereOptions = {};
|
|
70
|
+
condition[column_name] = not ? { [Op.notLike]: `${value}%` } : { [Op.like]: `${value}%` };
|
|
71
|
+
return { condition };
|
|
72
|
+
}
|
|
73
|
+
override getEndsWith(column_name: string, not: boolean, value: string)
|
|
74
|
+
{
|
|
75
|
+
let condition: WhereOptions = {};
|
|
76
|
+
condition[column_name] = not ? { [Op.notLike]: `%${value}` } : { [Op.like]: `%${value}` };
|
|
77
|
+
return { condition };
|
|
78
|
+
}
|
|
79
|
+
override getLT(column_name: string, value: any)
|
|
80
|
+
{
|
|
81
|
+
let condition: WhereOptions = {};
|
|
82
|
+
condition[column_name] = { [Op.lt]: value };
|
|
83
|
+
return { condition };
|
|
84
|
+
}
|
|
85
|
+
override getLTE(column_name: string, value: any)
|
|
86
|
+
{
|
|
87
|
+
let condition: WhereOptions = {};
|
|
88
|
+
condition[column_name] = { [Op.lte]: value };
|
|
89
|
+
return { condition };
|
|
90
|
+
}
|
|
91
|
+
override getGT(column_name: string, value: any)
|
|
92
|
+
{
|
|
93
|
+
let condition: WhereOptions = {};
|
|
94
|
+
condition[column_name] = { [Op.gt]: value };
|
|
95
|
+
return { condition };
|
|
96
|
+
}
|
|
97
|
+
override getGTE(column_name: string, value: any)
|
|
98
|
+
{
|
|
99
|
+
let condition: WhereOptions = {};
|
|
100
|
+
condition[column_name] = { [Op.gte]: value };
|
|
101
|
+
return { condition };
|
|
102
|
+
}
|
|
103
|
+
override async getInSelect(table_name: string, not: boolean, join: BaseFilterItemBuilder_JoinTable<WhereOptions>, conditions: WhereOptions[])
|
|
104
|
+
{
|
|
105
|
+
let select = await new Promise<string>(resolve =>
|
|
106
|
+
{
|
|
107
|
+
let t = this.database.getTable(table_name);
|
|
108
|
+
let table = t as BaseSequelizeTable<BaseSequelizeDatabase, any>;
|
|
109
|
+
table.model.findAll({
|
|
110
|
+
where: { [Op.and]: conditions },
|
|
111
|
+
attributes: [join.secondary.column],
|
|
112
|
+
logging(sql)
|
|
113
|
+
{
|
|
114
|
+
let q = sql.substring(sql.indexOf("SELECT"));
|
|
115
|
+
if (q.endsWith(";"))
|
|
116
|
+
q = q.slice(0, -1);
|
|
117
|
+
resolve(q);
|
|
118
|
+
},
|
|
119
|
+
});
|
|
120
|
+
});
|
|
121
|
+
let query = `${join.main.column} ${not ? "NOT" : ""} IN (${select})`;
|
|
122
|
+
return sequelize.literal(query);
|
|
123
|
+
}
|
|
124
124
|
}
|
package/src/BaseMSSQLDatabase.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { BaseSequelizeDatabase } from "./BaseSequelizeDatabase";
|
|
2
|
-
|
|
3
|
-
export abstract class BaseMSSQLDatabase extends BaseSequelizeDatabase
|
|
4
|
-
{
|
|
5
|
-
constructor(host: string, port: number, name: string, user: string, pass: string, logging: boolean = false)
|
|
6
|
-
{
|
|
7
|
-
super('mssql', host, port, name, user, pass, logging);
|
|
8
|
-
}
|
|
1
|
+
import { BaseSequelizeDatabase } from "./BaseSequelizeDatabase";
|
|
2
|
+
|
|
3
|
+
export abstract class BaseMSSQLDatabase extends BaseSequelizeDatabase
|
|
4
|
+
{
|
|
5
|
+
constructor(host: string, port: number, name: string, user: string, pass: string, logging: boolean = false)
|
|
6
|
+
{
|
|
7
|
+
super('mssql', host, port, name, user, pass, logging);
|
|
8
|
+
}
|
|
9
9
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { BaseSequelizeDatabase } from "./BaseSequelizeDatabase";
|
|
2
|
-
|
|
3
|
-
export abstract class BaseMariaDBDatabase extends BaseSequelizeDatabase
|
|
4
|
-
{
|
|
5
|
-
constructor(host: string, port: number, name: string, user: string, pass: string, logging: boolean = false)
|
|
6
|
-
{
|
|
7
|
-
super('mariadb', host, port, name, user, pass, logging);
|
|
8
|
-
}
|
|
1
|
+
import { BaseSequelizeDatabase } from "./BaseSequelizeDatabase";
|
|
2
|
+
|
|
3
|
+
export abstract class BaseMariaDBDatabase extends BaseSequelizeDatabase
|
|
4
|
+
{
|
|
5
|
+
constructor(host: string, port: number, name: string, user: string, pass: string, logging: boolean = false)
|
|
6
|
+
{
|
|
7
|
+
super('mariadb', host, port, name, user, pass, logging);
|
|
8
|
+
}
|
|
9
9
|
}
|
package/src/BaseMySqlDatabase.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { BaseSequelizeDatabase } from "./BaseSequelizeDatabase";
|
|
2
|
-
|
|
3
|
-
export abstract class BaseMySqlDatabase extends BaseSequelizeDatabase
|
|
4
|
-
{
|
|
5
|
-
constructor(host: string, port: number, name: string, user: string, pass: string, logging: boolean = false)
|
|
6
|
-
{
|
|
7
|
-
super('mysql', host, port, name, user, pass, logging);
|
|
8
|
-
}
|
|
1
|
+
import { BaseSequelizeDatabase } from "./BaseSequelizeDatabase";
|
|
2
|
+
|
|
3
|
+
export abstract class BaseMySqlDatabase extends BaseSequelizeDatabase
|
|
4
|
+
{
|
|
5
|
+
constructor(host: string, port: number, name: string, user: string, pass: string, logging: boolean = false)
|
|
6
|
+
{
|
|
7
|
+
super('mysql', host, port, name, user, pass, logging);
|
|
8
|
+
}
|
|
9
9
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { BaseSequelizeDatabase } from "./BaseSequelizeDatabase";
|
|
2
|
-
|
|
3
|
-
export abstract class BaseOracleDatabase extends BaseSequelizeDatabase
|
|
4
|
-
{
|
|
5
|
-
constructor(host: string, port: number, name: string, user: string, pass: string, logging: boolean = false)
|
|
6
|
-
{
|
|
7
|
-
super('oracle', host, port, name, user, pass, logging);
|
|
8
|
-
}
|
|
1
|
+
import { BaseSequelizeDatabase } from "./BaseSequelizeDatabase";
|
|
2
|
+
|
|
3
|
+
export abstract class BaseOracleDatabase extends BaseSequelizeDatabase
|
|
4
|
+
{
|
|
5
|
+
constructor(host: string, port: number, name: string, user: string, pass: string, logging: boolean = false)
|
|
6
|
+
{
|
|
7
|
+
super('oracle', host, port, name, user, pass, logging);
|
|
8
|
+
}
|
|
9
9
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { BaseSequelizeDatabase } from "./BaseSequelizeDatabase";
|
|
2
|
-
|
|
3
|
-
export abstract class BasePostgreSQLDatabase extends BaseSequelizeDatabase
|
|
4
|
-
{
|
|
5
|
-
constructor(host: string, port: number, name: string, user: string, pass: string, logging: boolean = false)
|
|
6
|
-
{
|
|
7
|
-
super('postgres', host, port, name, user, pass, logging);
|
|
8
|
-
}
|
|
1
|
+
import { BaseSequelizeDatabase } from "./BaseSequelizeDatabase";
|
|
2
|
+
|
|
3
|
+
export abstract class BasePostgreSQLDatabase extends BaseSequelizeDatabase
|
|
4
|
+
{
|
|
5
|
+
constructor(host: string, port: number, name: string, user: string, pass: string, logging: boolean = false)
|
|
6
|
+
{
|
|
7
|
+
super('postgres', host, port, name, user, pass, logging);
|
|
8
|
+
}
|
|
9
9
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { BaseSequelizeDatabase } from "./BaseSequelizeDatabase";
|
|
2
|
-
|
|
3
|
-
export abstract class BaseSQLiteDatabase extends BaseSequelizeDatabase
|
|
4
|
-
{
|
|
5
|
-
constructor(host: string, port: number, name: string, user: string, pass: string, logging: boolean = false)
|
|
6
|
-
{
|
|
7
|
-
super('sqlite', host, port, name, user, pass, logging);
|
|
8
|
-
}
|
|
1
|
+
import { BaseSequelizeDatabase } from "./BaseSequelizeDatabase";
|
|
2
|
+
|
|
3
|
+
export abstract class BaseSQLiteDatabase extends BaseSequelizeDatabase
|
|
4
|
+
{
|
|
5
|
+
constructor(host: string, port: number, name: string, user: string, pass: string, logging: boolean = false)
|
|
6
|
+
{
|
|
7
|
+
super('sqlite', host, port, name, user, pass, logging);
|
|
8
|
+
}
|
|
9
9
|
}
|