nanodb-orm 0.0.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.
- package/LICENSE +21 -0
- package/README.md +288 -0
- package/dist/constants/index.d.ts +59 -0
- package/dist/constants/index.d.ts.map +1 -0
- package/dist/constants/index.js +67 -0
- package/dist/constants/index.js.map +1 -0
- package/dist/core/config.d.ts +17 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +40 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/connection.d.ts +29 -0
- package/dist/core/connection.d.ts.map +1 -0
- package/dist/core/connection.js +77 -0
- package/dist/core/connection.js.map +1 -0
- package/dist/core/index.d.ts +7 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +26 -0
- package/dist/core/index.js.map +1 -0
- package/dist/example.d.ts +67 -0
- package/dist/example.d.ts.map +1 -0
- package/dist/example.js +86 -0
- package/dist/example.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +41 -0
- package/dist/index.js.map +1 -0
- package/dist/init.d.ts +28 -0
- package/dist/init.d.ts.map +1 -0
- package/dist/init.js +63 -0
- package/dist/init.js.map +1 -0
- package/dist/types/errors.d.ts +23 -0
- package/dist/types/errors.d.ts.map +1 -0
- package/dist/types/errors.js +46 -0
- package/dist/types/errors.js.map +1 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +23 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/types.d.ts +30 -0
- package/dist/types/types.d.ts.map +1 -0
- package/dist/types/types.js +6 -0
- package/dist/types/types.js.map +1 -0
- package/dist/utils/index.d.ts +10 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +18 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger.d.ts +26 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +41 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/migrations.d.ts +94 -0
- package/dist/utils/migrations.d.ts.map +1 -0
- package/dist/utils/migrations.js +440 -0
- package/dist/utils/migrations.js.map +1 -0
- package/dist/utils/schema-introspection.d.ts +183 -0
- package/dist/utils/schema-introspection.d.ts.map +1 -0
- package/dist/utils/schema-introspection.js +501 -0
- package/dist/utils/schema-introspection.js.map +1 -0
- package/dist/utils/seeds.d.ts +51 -0
- package/dist/utils/seeds.d.ts.map +1 -0
- package/dist/utils/seeds.js +209 -0
- package/dist/utils/seeds.js.map +1 -0
- package/dist/utils/sync.d.ts +57 -0
- package/dist/utils/sync.d.ts.map +1 -0
- package/dist/utils/sync.js +221 -0
- package/dist/utils/sync.js.map +1 -0
- package/package.json +53 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-introspection.js","sourceRoot":"","sources":["../../utils/schema-introspection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Simple database seeding utility
|
|
3
|
+
* Accepts schema data as parameters to work as an npm package
|
|
4
|
+
*/
|
|
5
|
+
export declare class DatabaseSeeds {
|
|
6
|
+
private static seedData;
|
|
7
|
+
private static tableNames;
|
|
8
|
+
private static tables;
|
|
9
|
+
/**
|
|
10
|
+
* Initialize the seeding utility with schema data
|
|
11
|
+
*/
|
|
12
|
+
static initialize(schemaData: {
|
|
13
|
+
tables: Record<string, any>;
|
|
14
|
+
tableNames: string[];
|
|
15
|
+
seedData?: Record<string, any[]>;
|
|
16
|
+
}): void;
|
|
17
|
+
/**
|
|
18
|
+
* Check if database already has data
|
|
19
|
+
*/
|
|
20
|
+
static hasData(): Promise<boolean>;
|
|
21
|
+
/**
|
|
22
|
+
* Seed the database with sample data
|
|
23
|
+
* Users can modify this method to add their own hardcoded seeds
|
|
24
|
+
*/
|
|
25
|
+
static seed(): Promise<void>;
|
|
26
|
+
/**
|
|
27
|
+
* Seed a specific table with sample data
|
|
28
|
+
* Users can modify this method to add their own hardcoded seeds for specific tables
|
|
29
|
+
*/
|
|
30
|
+
private static seedTable;
|
|
31
|
+
/**
|
|
32
|
+
* Generate seed data for a table
|
|
33
|
+
* Uses the provided seed data for predefined tables, falls back to generic generation
|
|
34
|
+
*/
|
|
35
|
+
private static generateSampleData;
|
|
36
|
+
/**
|
|
37
|
+
* Generate generic sample data for unknown table types
|
|
38
|
+
* Users can modify this method to add their own generic sample data patterns
|
|
39
|
+
*/
|
|
40
|
+
private static generateGenericSampleData;
|
|
41
|
+
/**
|
|
42
|
+
* Clear all data from all tables
|
|
43
|
+
* Useful for testing or resetting the database
|
|
44
|
+
*/
|
|
45
|
+
static clearAllData(): Promise<void>;
|
|
46
|
+
/**
|
|
47
|
+
* Reset database to initial state (clear + seed)
|
|
48
|
+
*/
|
|
49
|
+
static reset(): Promise<void>;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=seeds.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seeds.d.ts","sourceRoot":"","sources":["../../utils/seeds.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA6B;IACpD,OAAO,CAAC,MAAM,CAAC,UAAU,CAAgB;IACzC,OAAO,CAAC,MAAM,CAAC,MAAM,CAA2B;IAEhD;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE;QAC5B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC5B,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;KAClC,GAAG,IAAI;IAKR;;OAEG;WACU,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAqBxC;;;OAGG;WACU,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAgClC;;;OAGG;mBACkB,SAAS;IAkC9B;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAUjC;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,yBAAyB;IAwCxC;;;OAGG;WACU,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB1C;;OAEG;WACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAWpC"}
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DatabaseSeeds = void 0;
|
|
4
|
+
const index_1 = require("../index");
|
|
5
|
+
const logger_1 = require("./logger");
|
|
6
|
+
const schema_introspection_1 = require("./schema-introspection");
|
|
7
|
+
const errors_1 = require("../types/errors");
|
|
8
|
+
/**
|
|
9
|
+
* Simple database seeding utility
|
|
10
|
+
* Accepts schema data as parameters to work as an npm package
|
|
11
|
+
*/
|
|
12
|
+
class DatabaseSeeds {
|
|
13
|
+
/**
|
|
14
|
+
* Initialize the seeding utility with schema data
|
|
15
|
+
*/
|
|
16
|
+
static initialize(schemaData) {
|
|
17
|
+
this.tables = schemaData.tables;
|
|
18
|
+
this.tableNames = schemaData.tableNames;
|
|
19
|
+
this.seedData = schemaData.seedData || {};
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Check if database already has data
|
|
23
|
+
*/
|
|
24
|
+
static async hasData() {
|
|
25
|
+
try {
|
|
26
|
+
const tableNames = this.tableNames.length > 0 ? this.tableNames : schema_introspection_1.SchemaIntrospection.getAllTableNames();
|
|
27
|
+
for (const tableName of tableNames) {
|
|
28
|
+
const result = await index_1.db.run(`SELECT COUNT(*) as count FROM ${tableName}`);
|
|
29
|
+
const count = Number(result.rows[0]?.count || 0);
|
|
30
|
+
if (count > 0) {
|
|
31
|
+
logger_1.logger.info(`Table ${tableName} has ${count} records`);
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
logger_1.logger.error('Error checking if database has data:', error);
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Seed the database with sample data
|
|
44
|
+
* Users can modify this method to add their own hardcoded seeds
|
|
45
|
+
*/
|
|
46
|
+
static async seed() {
|
|
47
|
+
try {
|
|
48
|
+
logger_1.logger.info('Seeding database with sample data...');
|
|
49
|
+
// Check if database already has data
|
|
50
|
+
if (await this.hasData()) {
|
|
51
|
+
logger_1.logger.info('Database already has data, skipping seed');
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
// Check if seed data is empty
|
|
55
|
+
if (Object.keys(this.seedData).length === 0) {
|
|
56
|
+
logger_1.logger.info('Seed data is empty, skipping seeding');
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
// Get all tables from schema
|
|
60
|
+
const tableNames = this.tableNames.length > 0 ? this.tableNames : schema_introspection_1.SchemaIntrospection.getAllTableNames();
|
|
61
|
+
logger_1.logger.info(`Found ${tableNames.length} tables to seed: ${tableNames.join(', ')}`);
|
|
62
|
+
// Seed each table with sample data
|
|
63
|
+
for (const tableName of tableNames) {
|
|
64
|
+
await this.seedTable(tableName);
|
|
65
|
+
}
|
|
66
|
+
logger_1.logger.info('Database seeding completed successfully!');
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
logger_1.logger.error('Error seeding database:', error);
|
|
70
|
+
throw new errors_1.DatabaseError(`Failed to seed database: ${error.message}`, 'seed', error);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Seed a specific table with sample data
|
|
75
|
+
* Users can modify this method to add their own hardcoded seeds for specific tables
|
|
76
|
+
*/
|
|
77
|
+
static async seedTable(tableName) {
|
|
78
|
+
try {
|
|
79
|
+
logger_1.logger.info(`Seeding table: ${tableName}`);
|
|
80
|
+
// Get columns for this table
|
|
81
|
+
const columns = schema_introspection_1.SchemaIntrospection.getTableColumns(tableName);
|
|
82
|
+
// Generate sample data based on table type
|
|
83
|
+
const sampleData = this.generateSampleData(tableName, columns);
|
|
84
|
+
// Insert sample data
|
|
85
|
+
for (const row of sampleData) {
|
|
86
|
+
const columnsStr = Object.keys(row).join(', ');
|
|
87
|
+
const valuesStr = Object.values(row).map(v => {
|
|
88
|
+
if (v === null || v === undefined) {
|
|
89
|
+
return 'NULL';
|
|
90
|
+
}
|
|
91
|
+
else if (typeof v === 'string') {
|
|
92
|
+
return `'${v.replace(/'/g, "''")}'`;
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
return v;
|
|
96
|
+
}
|
|
97
|
+
}).join(', ');
|
|
98
|
+
const insertSql = `INSERT INTO ${tableName} (${columnsStr}) VALUES (${valuesStr})`;
|
|
99
|
+
await index_1.db.run(insertSql);
|
|
100
|
+
}
|
|
101
|
+
logger_1.logger.info(`Seeded table ${tableName} with ${sampleData.length} records`);
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
logger_1.logger.error(`Error seeding table ${tableName}:`, error);
|
|
105
|
+
throw new errors_1.DatabaseError(`Failed to seed table ${tableName}: ${error.message}`, 'seed', error);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Generate seed data for a table
|
|
110
|
+
* Uses the provided seed data for predefined tables, falls back to generic generation
|
|
111
|
+
*/
|
|
112
|
+
static generateSampleData(tableName, columns) {
|
|
113
|
+
// Check if we have predefined seed data for this table
|
|
114
|
+
if (tableName in this.seedData) {
|
|
115
|
+
return this.seedData[tableName];
|
|
116
|
+
}
|
|
117
|
+
// Generic fallback for any other tables
|
|
118
|
+
return this.generateGenericSampleData(tableName, columns);
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Generate generic sample data for unknown table types
|
|
122
|
+
* Users can modify this method to add their own generic sample data patterns
|
|
123
|
+
*/
|
|
124
|
+
static generateGenericSampleData(tableName, columns) {
|
|
125
|
+
const sampleData = [];
|
|
126
|
+
// Generate 3 sample records
|
|
127
|
+
for (let i = 1; i <= 3; i++) {
|
|
128
|
+
const row = {};
|
|
129
|
+
for (const column of columns) {
|
|
130
|
+
if (column === 'id') {
|
|
131
|
+
row[column] = i;
|
|
132
|
+
}
|
|
133
|
+
else if (column.includes('name') || column.includes('title')) {
|
|
134
|
+
row[column] = `Sample ${column} ${i}`;
|
|
135
|
+
}
|
|
136
|
+
else if (column.includes('email')) {
|
|
137
|
+
row[column] = `user${i}@example.com`;
|
|
138
|
+
}
|
|
139
|
+
else if (column.includes('description')) {
|
|
140
|
+
row[column] = `This is a sample ${column} for record ${i}`;
|
|
141
|
+
}
|
|
142
|
+
else if (column.includes('price') || column.includes('amount')) {
|
|
143
|
+
row[column] = 100 * i;
|
|
144
|
+
}
|
|
145
|
+
else if (column.includes('_id')) {
|
|
146
|
+
row[column] = i; // Foreign key
|
|
147
|
+
}
|
|
148
|
+
else if (column.includes('created_at')) {
|
|
149
|
+
row[column] = '2024-01-01 10:00:00';
|
|
150
|
+
}
|
|
151
|
+
else if (column.includes('updated_at')) {
|
|
152
|
+
row[column] = null;
|
|
153
|
+
}
|
|
154
|
+
else if (column.includes('is_active') || column.includes('active')) {
|
|
155
|
+
row[column] = 1;
|
|
156
|
+
}
|
|
157
|
+
else if (column.includes('color')) {
|
|
158
|
+
row[column] = '#000000';
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
// Generic fallback
|
|
162
|
+
row[column] = `Sample ${column} ${i}`;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
sampleData.push(row);
|
|
166
|
+
}
|
|
167
|
+
return sampleData;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Clear all data from all tables
|
|
171
|
+
* Useful for testing or resetting the database
|
|
172
|
+
*/
|
|
173
|
+
static async clearAllData() {
|
|
174
|
+
try {
|
|
175
|
+
logger_1.logger.info('Clearing all data from database...');
|
|
176
|
+
const tableNames = this.tableNames.length > 0 ? this.tableNames : schema_introspection_1.SchemaIntrospection.getAllTableNames();
|
|
177
|
+
// Clear data in reverse order to handle foreign key constraints
|
|
178
|
+
for (const tableName of tableNames.reverse()) {
|
|
179
|
+
await index_1.db.run(`DELETE FROM ${tableName}`);
|
|
180
|
+
logger_1.logger.info(`Cleared data from table: ${tableName}`);
|
|
181
|
+
}
|
|
182
|
+
logger_1.logger.info('All data cleared successfully!');
|
|
183
|
+
}
|
|
184
|
+
catch (error) {
|
|
185
|
+
logger_1.logger.error('Error clearing database data:', error);
|
|
186
|
+
throw new errors_1.DatabaseError(`Failed to clear database data: ${error.message}`, 'clear', error);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Reset database to initial state (clear + seed)
|
|
191
|
+
*/
|
|
192
|
+
static async reset() {
|
|
193
|
+
try {
|
|
194
|
+
logger_1.logger.info('Resetting database to initial state...');
|
|
195
|
+
await this.clearAllData();
|
|
196
|
+
await this.seed();
|
|
197
|
+
logger_1.logger.info('Database reset completed successfully!');
|
|
198
|
+
}
|
|
199
|
+
catch (error) {
|
|
200
|
+
logger_1.logger.error('Error resetting database:', error);
|
|
201
|
+
throw new errors_1.DatabaseError(`Failed to reset database: ${error.message}`, 'reset', error);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
exports.DatabaseSeeds = DatabaseSeeds;
|
|
206
|
+
DatabaseSeeds.seedData = {};
|
|
207
|
+
DatabaseSeeds.tableNames = [];
|
|
208
|
+
DatabaseSeeds.tables = {};
|
|
209
|
+
//# sourceMappingURL=seeds.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seeds.js","sourceRoot":"","sources":["../../utils/seeds.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Completely Generic Database Sync Utilities
|
|
3
|
+
* Reads from schema.ts and performs database operations
|
|
4
|
+
* No hardcoded table names or structures - completely dynamic!
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Completely Generic Database Sync Utilities
|
|
8
|
+
* Works with any table structure defined in schema.ts
|
|
9
|
+
* No hardcoded values - everything is derived from schema.ts
|
|
10
|
+
*/
|
|
11
|
+
export declare class DatabaseSync {
|
|
12
|
+
/**
|
|
13
|
+
* Setup database - initialize schema and seed with sample data
|
|
14
|
+
* Completely generic - works with any table structure defined in schema.ts
|
|
15
|
+
*/
|
|
16
|
+
static setup(): Promise<void>;
|
|
17
|
+
/**
|
|
18
|
+
* Sync database with Turso (if supported)
|
|
19
|
+
* Completely generic - works with any table structure defined in schema.ts
|
|
20
|
+
*/
|
|
21
|
+
static sync(): Promise<{
|
|
22
|
+
success: boolean;
|
|
23
|
+
message: string;
|
|
24
|
+
tablesSynced: string[];
|
|
25
|
+
errors: string[];
|
|
26
|
+
}>;
|
|
27
|
+
/**
|
|
28
|
+
* Get database information
|
|
29
|
+
* Completely generic - works with any table structure defined in schema.ts
|
|
30
|
+
*/
|
|
31
|
+
static getDatabaseInfo(): Promise<{
|
|
32
|
+
tables: string[];
|
|
33
|
+
tableCounts: Record<string, number>;
|
|
34
|
+
totalRecords: number;
|
|
35
|
+
schemaValid: boolean;
|
|
36
|
+
syncSupported: boolean;
|
|
37
|
+
}>;
|
|
38
|
+
/**
|
|
39
|
+
* Reset database (drop, recreate, and seed)
|
|
40
|
+
* Completely generic - works with any table structure defined in schema.ts
|
|
41
|
+
*/
|
|
42
|
+
static reset(): Promise<void>;
|
|
43
|
+
/**
|
|
44
|
+
* Health check for database
|
|
45
|
+
* Completely generic - works with any table structure defined in schema.ts
|
|
46
|
+
*/
|
|
47
|
+
static healthCheck(): Promise<{
|
|
48
|
+
healthy: boolean;
|
|
49
|
+
tables: string[];
|
|
50
|
+
tableCounts: Record<string, number>;
|
|
51
|
+
totalRecords: number;
|
|
52
|
+
schemaValid: boolean;
|
|
53
|
+
syncSupported: boolean;
|
|
54
|
+
errors: string[];
|
|
55
|
+
}>;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=sync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../utils/sync.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH;;;;GAIG;AACH,qBAAa,YAAY;IACvB;;;OAGG;WACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBnC;;;OAGG;WACU,IAAI,IAAI,OAAO,CAAC;QAC3B,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC;IAuDF;;;OAGG;WACU,eAAe,IAAI,OAAO,CAAC;QACtC,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACpC,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,OAAO,CAAC;QACrB,aAAa,EAAE,OAAO,CAAC;KACxB,CAAC;IA4DF;;;OAGG;WACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAenC;;;OAGG;WACU,WAAW,IAAI,OAAO,CAAC;QAClC,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACpC,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,OAAO,CAAC;QACrB,aAAa,EAAE,OAAO,CAAC;QACvB,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC;CAuCH"}
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Completely Generic Database Sync Utilities
|
|
4
|
+
* Reads from schema.ts and performs database operations
|
|
5
|
+
* No hardcoded table names or structures - completely dynamic!
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.DatabaseSync = void 0;
|
|
9
|
+
const drizzle_orm_1 = require("drizzle-orm");
|
|
10
|
+
const connection_1 = require("../core/connection");
|
|
11
|
+
const logger_1 = require("./logger");
|
|
12
|
+
const errors_1 = require("../types/errors");
|
|
13
|
+
const schema_introspection_1 = require("./schema-introspection");
|
|
14
|
+
const migrations_1 = require("./migrations");
|
|
15
|
+
const seeds_1 = require("./seeds");
|
|
16
|
+
/**
|
|
17
|
+
* Completely Generic Database Sync Utilities
|
|
18
|
+
* Works with any table structure defined in schema.ts
|
|
19
|
+
* No hardcoded values - everything is derived from schema.ts
|
|
20
|
+
*/
|
|
21
|
+
class DatabaseSync {
|
|
22
|
+
/**
|
|
23
|
+
* Setup database - initialize schema and seed with sample data
|
|
24
|
+
* Completely generic - works with any table structure defined in schema.ts
|
|
25
|
+
*/
|
|
26
|
+
static async setup() {
|
|
27
|
+
try {
|
|
28
|
+
logger_1.logger.info('Setting up database...');
|
|
29
|
+
// Initialize schema from schema.ts
|
|
30
|
+
await migrations_1.DatabaseMigrations.initializeSchema();
|
|
31
|
+
// Seed with sample data
|
|
32
|
+
await seeds_1.DatabaseSeeds.seed();
|
|
33
|
+
logger_1.logger.info('Database setup completed successfully!');
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
const dbError = new errors_1.DatabaseError('Database setup failed', 'setup', error);
|
|
37
|
+
logger_1.logger.error(dbError.message, dbError);
|
|
38
|
+
throw dbError;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Sync database with Turso (if supported)
|
|
43
|
+
* Completely generic - works with any table structure defined in schema.ts
|
|
44
|
+
*/
|
|
45
|
+
static async sync() {
|
|
46
|
+
try {
|
|
47
|
+
logger_1.logger.info('Checking sync capabilities...');
|
|
48
|
+
const db = connection_1.DatabaseConnection.getInstance();
|
|
49
|
+
const tableNames = schema_introspection_1.SchemaIntrospection.getAllTableNames();
|
|
50
|
+
// Try to sync with Turso
|
|
51
|
+
try {
|
|
52
|
+
// Access the client directly for sync
|
|
53
|
+
const client = db.$client;
|
|
54
|
+
if (client && typeof client.sync === 'function') {
|
|
55
|
+
await client.sync();
|
|
56
|
+
logger_1.logger.info('Database synced successfully with Turso');
|
|
57
|
+
return {
|
|
58
|
+
success: true,
|
|
59
|
+
message: 'Database synced successfully with Turso',
|
|
60
|
+
tablesSynced: tableNames,
|
|
61
|
+
errors: []
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
throw new errors_1.DatabaseError('Sync not supported', 'sync');
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
// Handle specific Turso sync errors
|
|
70
|
+
if (error.code === 'SYNC_NOT_SUPPORTED') {
|
|
71
|
+
logger_1.logger.info('Sync not supported in HTTP mode - this is expected for remote connections');
|
|
72
|
+
return {
|
|
73
|
+
success: true,
|
|
74
|
+
message: 'Sync not supported in HTTP mode - this is expected for remote connections',
|
|
75
|
+
tablesSynced: tableNames,
|
|
76
|
+
errors: []
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
logger_1.logger.warn('Sync failed:', error.message);
|
|
81
|
+
return {
|
|
82
|
+
success: false,
|
|
83
|
+
message: `Sync failed: ${error.message}`,
|
|
84
|
+
tablesSynced: [],
|
|
85
|
+
errors: [error.message]
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
catch (error) {
|
|
91
|
+
const dbError = new errors_1.DatabaseError('Database sync failed', 'sync', error);
|
|
92
|
+
logger_1.logger.error(dbError.message, dbError);
|
|
93
|
+
return {
|
|
94
|
+
success: false,
|
|
95
|
+
message: dbError.message,
|
|
96
|
+
tablesSynced: [],
|
|
97
|
+
errors: [dbError.message]
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Get database information
|
|
103
|
+
* Completely generic - works with any table structure defined in schema.ts
|
|
104
|
+
*/
|
|
105
|
+
static async getDatabaseInfo() {
|
|
106
|
+
try {
|
|
107
|
+
const db = connection_1.DatabaseConnection.getInstance();
|
|
108
|
+
const tableNames = schema_introspection_1.SchemaIntrospection.getAllTableNames();
|
|
109
|
+
// Get table counts
|
|
110
|
+
const tableCounts = {};
|
|
111
|
+
let totalRecords = 0;
|
|
112
|
+
for (const tableName of tableNames) {
|
|
113
|
+
const table = schema_introspection_1.SchemaIntrospection.getTable(tableName);
|
|
114
|
+
if (table) {
|
|
115
|
+
try {
|
|
116
|
+
const result = await db.run((0, drizzle_orm_1.sql) `SELECT COUNT(*) as count FROM ${drizzle_orm_1.sql.identifier(tableName)}`);
|
|
117
|
+
const count = Number(result.rows[0]?.count || 0);
|
|
118
|
+
tableCounts[tableName] = count;
|
|
119
|
+
totalRecords += count;
|
|
120
|
+
}
|
|
121
|
+
catch (error) {
|
|
122
|
+
logger_1.logger.warn(`Could not get count for table ${tableName}:`, error);
|
|
123
|
+
tableCounts[tableName] = 0;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
// Check schema validity
|
|
128
|
+
const schemaValidation = await migrations_1.DatabaseMigrations.validateSchema();
|
|
129
|
+
// Check sync support
|
|
130
|
+
let syncSupported = false;
|
|
131
|
+
try {
|
|
132
|
+
const client = db.$client;
|
|
133
|
+
if (client && typeof client.sync === 'function') {
|
|
134
|
+
await client.sync();
|
|
135
|
+
syncSupported = true;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
catch (error) {
|
|
139
|
+
if (error.code === 'SYNC_NOT_SUPPORTED') {
|
|
140
|
+
syncSupported = false;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
return {
|
|
144
|
+
tables: tableNames,
|
|
145
|
+
tableCounts,
|
|
146
|
+
totalRecords,
|
|
147
|
+
schemaValid: schemaValidation.isValid,
|
|
148
|
+
syncSupported
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
catch (error) {
|
|
152
|
+
logger_1.logger.error('Error getting database info:', error);
|
|
153
|
+
return {
|
|
154
|
+
tables: [],
|
|
155
|
+
tableCounts: {},
|
|
156
|
+
totalRecords: 0,
|
|
157
|
+
schemaValid: false,
|
|
158
|
+
syncSupported: false
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Reset database (drop, recreate, and seed)
|
|
164
|
+
* Completely generic - works with any table structure defined in schema.ts
|
|
165
|
+
*/
|
|
166
|
+
static async reset() {
|
|
167
|
+
try {
|
|
168
|
+
logger_1.logger.warn('Resetting database...');
|
|
169
|
+
await migrations_1.DatabaseMigrations.resetDatabase();
|
|
170
|
+
await seeds_1.DatabaseSeeds.seed();
|
|
171
|
+
logger_1.logger.info('Database reset completed');
|
|
172
|
+
}
|
|
173
|
+
catch (error) {
|
|
174
|
+
const dbError = new errors_1.DatabaseError('Database reset failed', 'reset', error);
|
|
175
|
+
logger_1.logger.error(dbError.message, dbError);
|
|
176
|
+
throw dbError;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Health check for database
|
|
181
|
+
* Completely generic - works with any table structure defined in schema.ts
|
|
182
|
+
*/
|
|
183
|
+
static async healthCheck() {
|
|
184
|
+
try {
|
|
185
|
+
const dbInfo = await this.getDatabaseInfo();
|
|
186
|
+
const errors = [];
|
|
187
|
+
// Check if all tables exist
|
|
188
|
+
if (!dbInfo.schemaValid) {
|
|
189
|
+
errors.push('Schema validation failed');
|
|
190
|
+
}
|
|
191
|
+
// Check if we have any data
|
|
192
|
+
if (dbInfo.totalRecords === 0) {
|
|
193
|
+
errors.push('No data found in database');
|
|
194
|
+
}
|
|
195
|
+
const healthy = errors.length === 0;
|
|
196
|
+
return {
|
|
197
|
+
healthy,
|
|
198
|
+
tables: dbInfo.tables,
|
|
199
|
+
tableCounts: dbInfo.tableCounts,
|
|
200
|
+
totalRecords: dbInfo.totalRecords,
|
|
201
|
+
schemaValid: dbInfo.schemaValid,
|
|
202
|
+
syncSupported: dbInfo.syncSupported,
|
|
203
|
+
errors
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
catch (error) {
|
|
207
|
+
logger_1.logger.error('Error during health check:', error);
|
|
208
|
+
return {
|
|
209
|
+
healthy: false,
|
|
210
|
+
tables: [],
|
|
211
|
+
tableCounts: {},
|
|
212
|
+
totalRecords: 0,
|
|
213
|
+
schemaValid: false,
|
|
214
|
+
syncSupported: false,
|
|
215
|
+
errors: [error.message]
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
exports.DatabaseSync = DatabaseSync;
|
|
221
|
+
//# sourceMappingURL=sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../utils/sync.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,6CAAkC;AAClC,mDAAwD;AACxD,qCAAkC;AAClC,4CAAgD;AAChD,iEAA6D;AAC7D,6CAAkD;AAClD,mCAAwC;AAExC;;;;GAIG;AACH,MAAa,YAAY;IACvB;;;OAGG;IACH,MAAM,CAAC,KAAK,CAAC,KAAK;QAChB,IAAI,CAAC;YACH,eAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;YAEtC,mCAAmC;YACnC,MAAM,+BAAkB,CAAC,gBAAgB,EAAE,CAAC;YAE5C,wBAAwB;YACxB,MAAM,qBAAa,CAAC,IAAI,EAAE,CAAC;YAE3B,eAAM,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;QACxD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,IAAI,sBAAa,CAAC,uBAAuB,EAAE,OAAO,EAAE,KAAc,CAAC,CAAC;YACpF,eAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACvC,MAAM,OAAO,CAAC;QAChB,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,KAAK,CAAC,IAAI;QAMf,IAAI,CAAC;YACH,eAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;YAE7C,MAAM,EAAE,GAAG,+BAAkB,CAAC,WAAW,EAAE,CAAC;YAC5C,MAAM,UAAU,GAAG,0CAAmB,CAAC,gBAAgB,EAAE,CAAC;YAE1D,yBAAyB;YACzB,IAAI,CAAC;gBACH,sCAAsC;gBACtC,MAAM,MAAM,GAAI,EAAU,CAAC,OAAO,CAAC;gBACnC,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;oBAChD,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;oBACpB,eAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;oBACvD,OAAO;wBACL,OAAO,EAAE,IAAI;wBACb,OAAO,EAAE,yCAAyC;wBAClD,YAAY,EAAE,UAAU;wBACxB,MAAM,EAAE,EAAE;qBACX,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,sBAAa,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;gBACxD,CAAC;YACH,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,oCAAoC;gBACpC,IAAI,KAAK,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;oBACxC,eAAM,CAAC,IAAI,CAAC,2EAA2E,CAAC,CAAC;oBACzF,OAAO;wBACL,OAAO,EAAE,IAAI;wBACb,OAAO,EAAE,2EAA2E;wBACpF,YAAY,EAAE,UAAU;wBACxB,MAAM,EAAE,EAAE;qBACX,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,eAAM,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;oBAC3C,OAAO;wBACL,OAAO,EAAE,KAAK;wBACd,OAAO,EAAE,gBAAgB,KAAK,CAAC,OAAO,EAAE;wBACxC,YAAY,EAAE,EAAE;wBAChB,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;qBACxB,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,IAAI,sBAAa,CAAC,sBAAsB,EAAE,MAAM,EAAE,KAAc,CAAC,CAAC;YAClF,eAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACvC,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,YAAY,EAAE,EAAE;gBAChB,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;aAC1B,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,KAAK,CAAC,eAAe;QAO1B,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,+BAAkB,CAAC,WAAW,EAAE,CAAC;YAC5C,MAAM,UAAU,GAAG,0CAAmB,CAAC,gBAAgB,EAAE,CAAC;YAE1D,mBAAmB;YACnB,MAAM,WAAW,GAA2B,EAAE,CAAC;YAC/C,IAAI,YAAY,GAAG,CAAC,CAAC;YAErB,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;gBACnC,MAAM,KAAK,GAAG,0CAAmB,CAAC,QAAQ,CAAC,SAAS,CAAQ,CAAC;gBAC7D,IAAI,KAAK,EAAE,CAAC;oBACV,IAAI,CAAC;wBACH,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,IAAA,iBAAG,EAAA,iCAAiC,iBAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;wBAC7F,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC;wBACjD,WAAW,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;wBAC/B,YAAY,IAAI,KAAK,CAAC;oBACxB,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,eAAM,CAAC,IAAI,CAAC,iCAAiC,SAAS,GAAG,EAAE,KAAK,CAAC,CAAC;wBAClE,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;oBAC7B,CAAC;gBACH,CAAC;YACH,CAAC;YAED,wBAAwB;YACxB,MAAM,gBAAgB,GAAG,MAAM,+BAAkB,CAAC,cAAc,EAAE,CAAC;YAEnE,qBAAqB;YACrB,IAAI,aAAa,GAAG,KAAK,CAAC;YAC1B,IAAI,CAAC;gBACH,MAAM,MAAM,GAAI,EAAU,CAAC,OAAO,CAAC;gBACnC,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;oBAChD,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;oBACpB,aAAa,GAAG,IAAI,CAAC;gBACvB,CAAC;YACH,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,IAAI,KAAK,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;oBACxC,aAAa,GAAG,KAAK,CAAC;gBACxB,CAAC;YACH,CAAC;YAED,OAAO;gBACL,MAAM,EAAE,UAAU;gBAClB,WAAW;gBACX,YAAY;gBACZ,WAAW,EAAE,gBAAgB,CAAC,OAAO;gBACrC,aAAa;aACd,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,eAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;YACpD,OAAO;gBACL,MAAM,EAAE,EAAE;gBACV,WAAW,EAAE,EAAE;gBACf,YAAY,EAAE,CAAC;gBACf,WAAW,EAAE,KAAK;gBAClB,aAAa,EAAE,KAAK;aACrB,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,KAAK,CAAC,KAAK;QAChB,IAAI,CAAC;YACH,eAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;YAErC,MAAM,+BAAkB,CAAC,aAAa,EAAE,CAAC;YACzC,MAAM,qBAAa,CAAC,IAAI,EAAE,CAAC;YAE3B,eAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,IAAI,sBAAa,CAAC,uBAAuB,EAAE,OAAO,EAAE,KAAc,CAAC,CAAC;YACpF,eAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACvC,MAAM,OAAO,CAAC;QAChB,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,KAAK,CAAC,WAAW;QAStB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;YAC5C,MAAM,MAAM,GAAa,EAAE,CAAC;YAE5B,4BAA4B;YAC5B,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;gBACxB,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;YAC1C,CAAC;YAED,4BAA4B;YAC5B,IAAI,MAAM,CAAC,YAAY,KAAK,CAAC,EAAE,CAAC;gBAC9B,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;YAC3C,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;YAEpC,OAAO;gBACL,OAAO;gBACP,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,YAAY,EAAE,MAAM,CAAC,YAAY;gBACjC,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,aAAa,EAAE,MAAM,CAAC,aAAa;gBACnC,MAAM;aACP,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,eAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;YAClD,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,EAAE;gBACV,WAAW,EAAE,EAAE;gBACf,YAAY,EAAE,CAAC;gBACf,WAAW,EAAE,KAAK;gBAClB,aAAa,EAAE,KAAK;gBACpB,MAAM,EAAE,CAAE,KAAe,CAAC,OAAO,CAAC;aACnC,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AAnOD,oCAmOC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "nanodb-orm",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "Generic database package with Drizzle ORM, auto-migrations, and schema introspection",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"files": [
|
|
8
|
+
"dist/**/*",
|
|
9
|
+
"README.md",
|
|
10
|
+
"LICENSE"
|
|
11
|
+
],
|
|
12
|
+
"scripts": {
|
|
13
|
+
"build": "tsc",
|
|
14
|
+
"dev": "tsc --watch",
|
|
15
|
+
"clean": "rm -rf dist",
|
|
16
|
+
"prepublishOnly": "npm run clean && npm run build",
|
|
17
|
+
"test": "jest",
|
|
18
|
+
"test:watch": "jest --watchAll"
|
|
19
|
+
},
|
|
20
|
+
"keywords": [
|
|
21
|
+
"database",
|
|
22
|
+
"drizzle",
|
|
23
|
+
"sqlite",
|
|
24
|
+
"turso",
|
|
25
|
+
"migrations",
|
|
26
|
+
"schema",
|
|
27
|
+
"orm"
|
|
28
|
+
],
|
|
29
|
+
"author": "Damilola Alao",
|
|
30
|
+
"license": "MIT",
|
|
31
|
+
"dependencies": {
|
|
32
|
+
"@libsql/client": "^0.15.14",
|
|
33
|
+
"drizzle-orm": "^0.44.5"
|
|
34
|
+
},
|
|
35
|
+
"devDependencies": {
|
|
36
|
+
"@types/jest": "^29.5.12",
|
|
37
|
+
"@types/node": "^22.15.21",
|
|
38
|
+
"jest": "^29.7.0",
|
|
39
|
+
"ts-jest": "^29.2.0",
|
|
40
|
+
"typescript": "^5.8.3"
|
|
41
|
+
},
|
|
42
|
+
"peerDependencies": {
|
|
43
|
+
"dotenv": "^17.2.1"
|
|
44
|
+
},
|
|
45
|
+
"repository": {
|
|
46
|
+
"type": "git",
|
|
47
|
+
"url": "https://github.com/damilolaalao/nanodb-orm.git"
|
|
48
|
+
},
|
|
49
|
+
"bugs": {
|
|
50
|
+
"url": "https://github.com/damilolaalao/nanodb-orm/issues"
|
|
51
|
+
},
|
|
52
|
+
"homepage": "https://github.com/damilolaalao/nanodb-orm#readme"
|
|
53
|
+
}
|