duckdb-tinyorm 1.0.44 → 2.0.0
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 +387 -47
- package/dist/constants/data-type.decorator.d.ts +20 -1
- package/dist/constants/data-type.decorator.js +62 -14
- package/dist/constants/data-type.decorator.js.map +1 -1
- package/dist/errors/orm-errors.d.ts +27 -0
- package/dist/errors/orm-errors.js +80 -0
- package/dist/errors/orm-errors.js.map +1 -0
- package/dist/helpers/bulk-insert.helper.d.ts +1 -0
- package/dist/helpers/bulk-insert.helper.js +19 -0
- package/dist/helpers/bulk-insert.helper.js.map +1 -0
- package/dist/helpers/db.helper.d.ts +10 -0
- package/dist/helpers/db.helper.js +62 -0
- package/dist/helpers/db.helper.js.map +1 -1
- package/dist/helpers/mapping.helper.d.ts +1 -1
- package/dist/helpers/mapping.helper.js +35 -35
- package/dist/helpers/mapping.helper.js.map +1 -1
- package/dist/helpers/table-util.helper.js +46 -19
- package/dist/helpers/table-util.helper.js.map +1 -1
- package/dist/index.d.ts +9 -3
- package/dist/index.js +24 -1
- package/dist/index.js.map +1 -1
- package/dist/migration/migration.d.ts +22 -0
- package/dist/migration/migration.js +143 -0
- package/dist/migration/migration.js.map +1 -0
- package/dist/pagination/pagination.d.ts +10 -0
- package/dist/pagination/pagination.js +3 -0
- package/dist/pagination/pagination.js.map +1 -0
- package/dist/query/query-builder.d.ts +27 -0
- package/dist/query/query-builder.js +113 -0
- package/dist/query/query-builder.js.map +1 -0
- package/dist/repositories/base.interface.d.ts +19 -2
- package/dist/repositories/base.repository.d.ts +18 -2
- package/dist/repositories/base.repository.js +159 -14
- package/dist/repositories/base.repository.js.map +1 -1
- package/dist/repositories/duckdb.repository.d.ts +18 -0
- package/dist/repositories/duckdb.repository.js +91 -16
- package/dist/repositories/duckdb.repository.js.map +1 -1
- package/dist/repositories/transaction.d.ts +9 -0
- package/dist/repositories/transaction.js +48 -0
- package/dist/repositories/transaction.js.map +1 -0
- package/dist/test.d.ts +4 -3
- package/dist/test.js +126 -28
- package/dist/test.js.map +1 -1
- package/package.json +3 -2
- package/tsconfig.json +9 -1
|
@@ -6,6 +6,8 @@ const duckdb_1 = require("duckdb");
|
|
|
6
6
|
const mapping_helper_1 = require("../helpers/mapping.helper");
|
|
7
7
|
const table_util_helper_1 = require("../helpers/table-util.helper");
|
|
8
8
|
const db_helper_1 = require("../helpers/db.helper");
|
|
9
|
+
const transaction_1 = require("./transaction"); // Add this import
|
|
10
|
+
const orm_errors_1 = require("../errors/orm-errors");
|
|
9
11
|
var DuckDbLocation;
|
|
10
12
|
(function (DuckDbLocation) {
|
|
11
13
|
DuckDbLocation["File"] = "";
|
|
@@ -51,22 +53,51 @@ class DuckDbRepository {
|
|
|
51
53
|
this.isClosed = false;
|
|
52
54
|
}
|
|
53
55
|
}
|
|
56
|
+
// Fix the sequence creation logic
|
|
54
57
|
async createTableIfNotExists(tableName, classType) {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
58
|
+
try {
|
|
59
|
+
// Get the actual table name from metadata if available
|
|
60
|
+
const actualTableName = Reflect.getMetadata('TableName', classType) || tableName;
|
|
61
|
+
// Extract auto-increment columns
|
|
62
|
+
const instance = new classType();
|
|
63
|
+
const propertyNames = Object.getOwnPropertyNames(instance);
|
|
64
|
+
const sequences = {};
|
|
65
|
+
for (const propertyName of propertyNames) {
|
|
66
|
+
const autoIncrement = Reflect.getMetadata('AutoIncrement', classType.prototype, propertyName);
|
|
67
|
+
const isPrimaryKey = Reflect.getMetadata('PrimaryKey', classType.prototype, propertyName);
|
|
68
|
+
if (autoIncrement && isPrimaryKey) {
|
|
69
|
+
// Create sequence name using the table name, not the class name
|
|
70
|
+
const sequenceName = `seq_${actualTableName}_${propertyName}`;
|
|
71
|
+
sequences[propertyName] = sequenceName;
|
|
72
|
+
// Create sequence first
|
|
73
|
+
const createSequenceStatement = `CREATE SEQUENCE IF NOT EXISTS ${sequenceName} START 1;`;
|
|
74
|
+
try {
|
|
75
|
+
await this.executeQuery(createSequenceStatement);
|
|
76
|
+
console.log(`Sequence ${sequenceName} is created successfully!`);
|
|
77
|
+
}
|
|
78
|
+
catch (err) {
|
|
79
|
+
console.error(`ERROR CREATING SEQUENCE: `, err);
|
|
80
|
+
throw err;
|
|
81
|
+
}
|
|
67
82
|
}
|
|
68
|
-
}
|
|
69
|
-
|
|
83
|
+
}
|
|
84
|
+
// Store sequences in metadata
|
|
85
|
+
Reflect.defineMetadata('Sequences', sequences, classType);
|
|
86
|
+
// Now create the table
|
|
87
|
+
const createTableStatement = (0, table_util_helper_1.generateCreateTableStatement)(actualTableName, classType);
|
|
88
|
+
try {
|
|
89
|
+
await this.executeQuery(createTableStatement);
|
|
90
|
+
console.log(`Table ${actualTableName} is created successfully!`);
|
|
91
|
+
}
|
|
92
|
+
catch (err) {
|
|
93
|
+
console.error(`ERROR CREATING: `, err);
|
|
94
|
+
throw err;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
catch (err) {
|
|
98
|
+
console.error(err);
|
|
99
|
+
throw err;
|
|
100
|
+
}
|
|
70
101
|
}
|
|
71
102
|
async getDuckDbExtension(extension_name) {
|
|
72
103
|
return this.executeQuery(`select extension_name, loaded, installed from duckdb_extensions() where extension_name='${extension_name}';`);
|
|
@@ -80,9 +111,15 @@ class DuckDbRepository {
|
|
|
80
111
|
async saveToDuckDB(tableName, classType, data) {
|
|
81
112
|
if (!(data?.length))
|
|
82
113
|
return;
|
|
83
|
-
|
|
114
|
+
// Get the actual table name from metadata if available
|
|
115
|
+
const actualTableName = Reflect.getMetadata('TableName', classType) || tableName;
|
|
116
|
+
await this.createTableIfNotExists(actualTableName, classType);
|
|
84
117
|
const query = data.map(item => (0, mapping_helper_1.mapToSQLFieldsValues)(item, classType)).join(', ');
|
|
85
|
-
|
|
118
|
+
// Log the SQL query for debugging
|
|
119
|
+
const fullQuery = (0, table_util_helper_1.generateInsertIntoStatement)(actualTableName, classType) + query;
|
|
120
|
+
console.log("SQL Insert Query:", fullQuery);
|
|
121
|
+
// Use actualTableName instead of tableName
|
|
122
|
+
await (0, db_helper_1.bulkInsert)(this.connection, fullQuery);
|
|
86
123
|
}
|
|
87
124
|
async saveToParquet(name, mainFolder) {
|
|
88
125
|
const fileName = `${name}.parquet`;
|
|
@@ -116,6 +153,44 @@ class DuckDbRepository {
|
|
|
116
153
|
const fileName = `${name}.parquet`;
|
|
117
154
|
await (0, db_helper_1.saveQueryToParquet)(this.connection, fileName, query, folder);
|
|
118
155
|
}
|
|
156
|
+
// Add this method to the DuckDbRepository class
|
|
157
|
+
createTransaction() {
|
|
158
|
+
if (!this.connection) {
|
|
159
|
+
this.connect();
|
|
160
|
+
}
|
|
161
|
+
return new transaction_1.Transaction(this.connection);
|
|
162
|
+
}
|
|
163
|
+
async exportTable(tableName, options) {
|
|
164
|
+
if (this.connection == undefined) {
|
|
165
|
+
throw new orm_errors_1.ConnectionError("Connection is not established.");
|
|
166
|
+
}
|
|
167
|
+
const actualTableName = `main.${tableName}`;
|
|
168
|
+
switch (options.format) {
|
|
169
|
+
case 'csv':
|
|
170
|
+
return await (0, db_helper_1.exportToCSV)(this.connection, actualTableName, options.fileName, options.csvOptions);
|
|
171
|
+
case 'json':
|
|
172
|
+
return await (0, db_helper_1.exportToJSON)(this.connection, actualTableName, options.fileName, options.jsonOptions);
|
|
173
|
+
case 'parquet':
|
|
174
|
+
return await (0, db_helper_1.exportToParquet)(this.connection, actualTableName, options.fileName, options.parquetOptions);
|
|
175
|
+
default:
|
|
176
|
+
throw new Error(`Unsupported format: ${options.format}`);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
async exportQuery(query, options) {
|
|
180
|
+
if (this.connection == undefined) {
|
|
181
|
+
throw new orm_errors_1.ConnectionError("Connection is not established.");
|
|
182
|
+
}
|
|
183
|
+
switch (options.format) {
|
|
184
|
+
case 'csv':
|
|
185
|
+
return await (0, db_helper_1.exportToCSV)(this.connection, query, options.fileName, options.csvOptions);
|
|
186
|
+
case 'json':
|
|
187
|
+
return await (0, db_helper_1.exportToJSON)(this.connection, query, options.fileName, options.jsonOptions);
|
|
188
|
+
case 'parquet':
|
|
189
|
+
return await (0, db_helper_1.exportToParquet)(this.connection, query, options.fileName, options.parquetOptions);
|
|
190
|
+
default:
|
|
191
|
+
throw new Error(`Unsupported format: ${options.format}`);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
119
194
|
}
|
|
120
195
|
exports.DuckDbRepository = DuckDbRepository;
|
|
121
196
|
//# sourceMappingURL=duckdb.repository.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"duckdb.repository.js","sourceRoot":"","sources":["../../src/repositories/duckdb.repository.ts"],"names":[],"mappings":";;;AAAA,uDAAuD;AACvD,mCAA8C;AAE9C,8DAAiE;AACjE,oEAAyG;AACzG,
|
|
1
|
+
{"version":3,"file":"duckdb.repository.js","sourceRoot":"","sources":["../../src/repositories/duckdb.repository.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Transaction = void 0;
|
|
4
|
+
const orm_errors_1 = require("../errors/orm-errors");
|
|
5
|
+
class Transaction {
|
|
6
|
+
connection;
|
|
7
|
+
constructor(connection) {
|
|
8
|
+
this.connection = connection;
|
|
9
|
+
}
|
|
10
|
+
async begin() {
|
|
11
|
+
try {
|
|
12
|
+
await this.execute('BEGIN TRANSACTION');
|
|
13
|
+
}
|
|
14
|
+
catch (error) {
|
|
15
|
+
throw new orm_errors_1.TransactionError('begin', error);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
async commit() {
|
|
19
|
+
try {
|
|
20
|
+
await this.execute('COMMIT');
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
throw new orm_errors_1.TransactionError('commit', error);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
async rollback() {
|
|
27
|
+
try {
|
|
28
|
+
await this.execute('ROLLBACK');
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
throw new orm_errors_1.TransactionError('rollback', error);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
execute(query) {
|
|
35
|
+
return new Promise((resolve, reject) => {
|
|
36
|
+
this.connection.run(query, (err) => {
|
|
37
|
+
if (err) {
|
|
38
|
+
reject(err);
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
resolve();
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
exports.Transaction = Transaction;
|
|
48
|
+
//# sourceMappingURL=transaction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transaction.js","sourceRoot":"","sources":["../../src/repositories/transaction.ts"],"names":[],"mappings":";;;AACA,qDAAwD;AAExD,MAAa,WAAW;IACA;IAApB,YAAoB,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;IAAG,CAAC;IAE9C,KAAK,CAAC,KAAK;QACP,IAAI,CAAC;YACD,MAAM,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;QAC5C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,IAAI,6BAAgB,CAAC,OAAO,EAAE,KAAc,CAAC,CAAC;QACxD,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM;QACR,IAAI,CAAC;YACD,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACjC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,IAAI,6BAAgB,CAAC,QAAQ,EAAE,KAAc,CAAC,CAAC;QACzD,CAAC;IACL,CAAC;IAED,KAAK,CAAC,QAAQ;QACV,IAAI,CAAC;YACD,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,IAAI,6BAAgB,CAAC,UAAU,EAAE,KAAc,CAAC,CAAC;QAC3D,CAAC;IACL,CAAC;IAEO,OAAO,CAAC,KAAa;QACzB,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACzC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;gBAC/B,IAAI,GAAG,EAAE,CAAC;oBACN,MAAM,CAAC,GAAG,CAAC,CAAC;gBAChB,CAAC;qBAAM,CAAC;oBACJ,OAAO,EAAE,CAAC;gBACd,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AAtCD,kCAsCC"}
|
package/dist/test.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import 'reflect-metadata';
|
|
2
2
|
export declare class Subject {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
Name
|
|
3
|
+
Id: number;
|
|
4
|
+
Code: string;
|
|
5
|
+
Name: string;
|
|
6
6
|
Description?: string;
|
|
7
7
|
Year: number;
|
|
8
|
+
constructor(code?: string, name?: string, description?: string, year?: number);
|
|
8
9
|
}
|
package/dist/test.js
CHANGED
|
@@ -11,72 +11,170 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.Subject = void 0;
|
|
13
13
|
require("reflect-metadata");
|
|
14
|
+
const duckdb_repository_1 = require("./repositories/duckdb.repository");
|
|
14
15
|
const data_type_decorator_1 = require("./constants/data-type.decorator");
|
|
15
16
|
const base_repository_1 = require("./repositories/base.repository");
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
// Create instance in memory or use File
|
|
18
|
+
const duckDbRepository = duckdb_repository_1.DuckDbRepository.getInstances({
|
|
19
|
+
name: 'default',
|
|
20
|
+
location: duckdb_repository_1.DuckDbLocation.Memory,
|
|
21
|
+
filename: undefined
|
|
22
|
+
});
|
|
19
23
|
let Subject = class Subject {
|
|
20
|
-
constructor(id = "", name, description, year = (new Date()).getFullYear()) {
|
|
21
|
-
this.Id = id;
|
|
22
|
-
this.Name = name;
|
|
23
|
-
this.Description = description;
|
|
24
|
-
this.Year = year;
|
|
25
|
-
}
|
|
26
24
|
Id;
|
|
25
|
+
Code;
|
|
27
26
|
Name;
|
|
28
27
|
Description;
|
|
29
28
|
Year;
|
|
29
|
+
constructor(code = "", name = "", description, year = new Date().getFullYear()) {
|
|
30
|
+
this.Code = code;
|
|
31
|
+
this.Name = name;
|
|
32
|
+
this.Description = description;
|
|
33
|
+
this.Year = year;
|
|
34
|
+
}
|
|
30
35
|
};
|
|
31
36
|
exports.Subject = Subject;
|
|
32
37
|
__decorate([
|
|
33
|
-
(0, data_type_decorator_1.
|
|
34
|
-
|
|
35
|
-
|
|
38
|
+
(0, data_type_decorator_1.Column)({
|
|
39
|
+
type: 'INTEGER',
|
|
40
|
+
primaryKey: true,
|
|
41
|
+
autoIncrement: true
|
|
42
|
+
}),
|
|
43
|
+
__metadata("design:type", Number)
|
|
36
44
|
], Subject.prototype, "Id", void 0);
|
|
37
45
|
__decorate([
|
|
38
|
-
(0, data_type_decorator_1.
|
|
46
|
+
(0, data_type_decorator_1.Column)({
|
|
47
|
+
type: 'VARCHAR',
|
|
48
|
+
notNull: true,
|
|
49
|
+
unique: true
|
|
50
|
+
}),
|
|
51
|
+
__metadata("design:type", String)
|
|
52
|
+
], Subject.prototype, "Code", void 0);
|
|
53
|
+
__decorate([
|
|
54
|
+
(0, data_type_decorator_1.Column)({
|
|
55
|
+
type: 'VARCHAR',
|
|
56
|
+
notNull: true
|
|
57
|
+
}),
|
|
39
58
|
__metadata("design:type", String)
|
|
40
59
|
], Subject.prototype, "Name", void 0);
|
|
41
60
|
__decorate([
|
|
42
|
-
(0, data_type_decorator_1.
|
|
61
|
+
(0, data_type_decorator_1.Column)({
|
|
62
|
+
type: 'TEXT'
|
|
63
|
+
}),
|
|
43
64
|
__metadata("design:type", String)
|
|
44
65
|
], Subject.prototype, "Description", void 0);
|
|
45
66
|
__decorate([
|
|
46
|
-
(0, data_type_decorator_1.
|
|
67
|
+
(0, data_type_decorator_1.Column)({
|
|
68
|
+
type: 'INT',
|
|
69
|
+
defaultValue: new Date().getFullYear(),
|
|
70
|
+
check: 'Year >= 2000'
|
|
71
|
+
}),
|
|
47
72
|
__metadata("design:type", Number)
|
|
48
73
|
], Subject.prototype, "Year", void 0);
|
|
49
74
|
exports.Subject = Subject = __decorate([
|
|
50
|
-
data_type_decorator_1.Entity,
|
|
75
|
+
(0, data_type_decorator_1.Entity)({ name: 'subjects' }),
|
|
51
76
|
__metadata("design:paramtypes", [String, String, String, Number])
|
|
52
77
|
], Subject);
|
|
53
78
|
let SubjectRepository = class SubjectRepository extends base_repository_1.BaseRepository {
|
|
54
79
|
constructor() {
|
|
55
80
|
super(duckDbRepository);
|
|
56
81
|
}
|
|
82
|
+
// Add a custom method to find by code
|
|
83
|
+
async findByCode(code) {
|
|
84
|
+
// Use tableName instead of classType.name
|
|
85
|
+
const query = `SELECT * FROM main.${this.tableName} WHERE Code='${code}'`;
|
|
86
|
+
const result = await this.repository.executeQuery(query);
|
|
87
|
+
return result.length > 0 ? result[0] : null;
|
|
88
|
+
}
|
|
89
|
+
// Add a custom method to remove by code
|
|
90
|
+
async removeByCode(code) {
|
|
91
|
+
const entityToDelete = await this.findByCode(code);
|
|
92
|
+
if (!entityToDelete)
|
|
93
|
+
return null;
|
|
94
|
+
// Use tableName instead of classType.name
|
|
95
|
+
const query = `DELETE FROM main.${this.tableName} WHERE Code='${code}'`;
|
|
96
|
+
await this.repository.executeQuery(query);
|
|
97
|
+
return entityToDelete;
|
|
98
|
+
}
|
|
57
99
|
};
|
|
58
100
|
SubjectRepository = __decorate([
|
|
59
101
|
(0, data_type_decorator_1.Repository)(Subject),
|
|
60
102
|
__metadata("design:paramtypes", [])
|
|
61
103
|
], SubjectRepository);
|
|
104
|
+
// Modify the test function to log IDs
|
|
62
105
|
async function test() {
|
|
63
106
|
const subjectRepository = new SubjectRepository();
|
|
64
107
|
await subjectRepository.init();
|
|
65
|
-
|
|
66
|
-
console.log("RESULT => ", result);
|
|
108
|
+
// Save entities
|
|
67
109
|
const subject1 = new Subject('JB', "Java Basic", "Java Basic", 2024);
|
|
68
110
|
const subject2 = new Subject('OOP', "Java OOP", "Java Object Oriented Programming", 2024);
|
|
69
|
-
|
|
70
|
-
await subjectRepository.save(
|
|
71
|
-
|
|
111
|
+
// Save and log the returned entities with their IDs
|
|
112
|
+
const savedSubject1 = await subjectRepository.save(subject1);
|
|
113
|
+
console.log("Saved subject 1 with ID:", savedSubject1.Id);
|
|
114
|
+
const savedSubject2 = await subjectRepository.save(subject2);
|
|
115
|
+
console.log("Saved subject 2 with ID:", savedSubject2.Id);
|
|
116
|
+
// Rest of your test...
|
|
117
|
+
// Find all records
|
|
118
|
+
const result = await subjectRepository.findAll();
|
|
72
119
|
console.table(result);
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
await subjectRepository.
|
|
78
|
-
|
|
79
|
-
|
|
120
|
+
// Find by Code using custom method
|
|
121
|
+
const subjectFound = await subjectRepository.findByCode("JB");
|
|
122
|
+
console.info(subjectFound);
|
|
123
|
+
// Delete by Code using custom method
|
|
124
|
+
await subjectRepository.removeByCode("JB");
|
|
125
|
+
// Find with criteria
|
|
126
|
+
const subjects = await subjectRepository.findBy({ Year: 2024 }, ["Year"]);
|
|
127
|
+
console.table(subjects);
|
|
128
|
+
// Use pagination
|
|
129
|
+
const page = await subjectRepository.findWithPagination({ page: 0, size: 10 });
|
|
130
|
+
console.log(`Found ${page.totalElements} subjects across ${page.totalPages} pages`);
|
|
131
|
+
// Use query builder
|
|
132
|
+
const queryBuilder = await subjectRepository.createQueryBuilder();
|
|
133
|
+
const customQuery = queryBuilder
|
|
134
|
+
.select(['Id', 'Name'])
|
|
135
|
+
.where('Year = 2024')
|
|
136
|
+
.orderBy('Name', 'ASC')
|
|
137
|
+
.limit(5)
|
|
138
|
+
.getQuery();
|
|
139
|
+
const customResults = await duckDbRepository.executeQuery(customQuery);
|
|
140
|
+
console.table(customResults);
|
|
141
|
+
// Use transactions
|
|
142
|
+
await subjectRepository.withTransaction(async (transaction) => {
|
|
143
|
+
const newSubject = new Subject('DB', 'Database', 'Database course', 2024);
|
|
144
|
+
await subjectRepository.save(newSubject);
|
|
145
|
+
// If any operation throws an error, the transaction will be rolled back
|
|
146
|
+
if (newSubject.Code !== 'DB') {
|
|
147
|
+
throw new Error('Something went wrong');
|
|
148
|
+
}
|
|
149
|
+
// If we get here, the transaction will be committed
|
|
150
|
+
});
|
|
151
|
+
// Example usage in test.ts or another file
|
|
152
|
+
// Export a table to CSV
|
|
153
|
+
await subjectRepository.exportData({
|
|
154
|
+
format: 'csv',
|
|
155
|
+
fileName: 'subjects.csv',
|
|
156
|
+
csvOptions: {
|
|
157
|
+
header: true,
|
|
158
|
+
delimiter: ','
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
// Export query results to JSON
|
|
162
|
+
const query = `SELECT * FROM main.subjects WHERE Year = 2024`;
|
|
163
|
+
await subjectRepository.exportQuery(query, {
|
|
164
|
+
format: 'json',
|
|
165
|
+
fileName: 'subjects-2024.json',
|
|
166
|
+
jsonOptions: {
|
|
167
|
+
pretty: true
|
|
168
|
+
}
|
|
169
|
+
});
|
|
170
|
+
// Export all data to Parquet using DuckDbRepository directly
|
|
171
|
+
await duckDbRepository.exportTable('subjects', {
|
|
172
|
+
format: 'parquet',
|
|
173
|
+
fileName: 'subjects.parquet',
|
|
174
|
+
parquetOptions: {
|
|
175
|
+
compression: 'ZSTD'
|
|
176
|
+
}
|
|
177
|
+
});
|
|
80
178
|
}
|
|
81
179
|
test();
|
|
82
180
|
//# sourceMappingURL=test.js.map
|
package/dist/test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,4BAA0B;
|
|
1
|
+
{"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "duckdb-tinyorm",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "TinyORM for Duckdb, easy setup",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -9,7 +9,8 @@
|
|
|
9
9
|
"prepublishOnly": "npm run build",
|
|
10
10
|
"test": "echo 'Test not implemented'",
|
|
11
11
|
"dev": "nodemon --exec ts-node src/test.ts",
|
|
12
|
-
"start": "node dist/index.js"
|
|
12
|
+
"start": "node dist/index.js",
|
|
13
|
+
"release": "node scripts/release.js"
|
|
13
14
|
},
|
|
14
15
|
"publishConfig": {
|
|
15
16
|
"registry": "https://registry.npmjs.org"
|