@dqcai/sqlite 1.0.0 → 2.0.2

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.
Files changed (51) hide show
  1. package/README.md +1491 -2328
  2. package/lib/adapters/base-adapter.d.ts.map +1 -1
  3. package/lib/adapters/index.d.ts +2 -0
  4. package/lib/adapters/index.d.ts.map +1 -0
  5. package/lib/core/base-service.d.ts +119 -0
  6. package/lib/core/base-service.d.ts.map +1 -0
  7. package/lib/core/database-factory.d.ts +98 -0
  8. package/lib/core/database-factory.d.ts.map +1 -0
  9. package/lib/core/database-manager.d.ts +208 -0
  10. package/lib/core/database-manager.d.ts.map +1 -0
  11. package/lib/core/index.d.ts +5 -0
  12. package/lib/core/index.d.ts.map +1 -0
  13. package/lib/core/universal-dao.d.ts +64 -0
  14. package/lib/core/universal-dao.d.ts.map +1 -0
  15. package/lib/index.d.ts +324 -14
  16. package/lib/index.d.ts.map +1 -1
  17. package/lib/index.js +1 -1
  18. package/lib/index.js.map +1 -1
  19. package/lib/index.mjs +45 -1
  20. package/lib/index.mjs.map +1 -1
  21. package/lib/index.umd.js +1 -1
  22. package/lib/index.umd.js.map +1 -1
  23. package/lib/query/query-builder.d.ts +120 -0
  24. package/lib/query/query-builder.d.ts.map +1 -0
  25. package/lib/types.d.ts +142 -4
  26. package/lib/types.d.ts.map +1 -1
  27. package/lib/utils/csv-import.d.ts +102 -0
  28. package/lib/utils/csv-import.d.ts.map +1 -0
  29. package/lib/utils/index.d.ts +3 -0
  30. package/lib/utils/index.d.ts.map +1 -0
  31. package/lib/utils/migration-manager.d.ts +184 -0
  32. package/lib/utils/migration-manager.d.ts.map +1 -0
  33. package/package.json +82 -63
  34. package/README-all-source.md +0 -1248
  35. package/README-ps-gemini.md +0 -1180
  36. package/lib/adapters/browser-adapter.d.ts +0 -17
  37. package/lib/adapters/browser-adapter.d.ts.map +0 -1
  38. package/lib/adapters/bun-adapter.d.ts +0 -7
  39. package/lib/adapters/bun-adapter.d.ts.map +0 -1
  40. package/lib/adapters/deno-adapter.d.ts +0 -7
  41. package/lib/adapters/deno-adapter.d.ts.map +0 -1
  42. package/lib/adapters/node-adapter.d.ts +0 -7
  43. package/lib/adapters/node-adapter.d.ts.map +0 -1
  44. package/lib/adapters/react-native-adapter.d.ts +0 -20
  45. package/lib/adapters/react-native-adapter.d.ts.map +0 -1
  46. package/lib/query-builder.d.ts +0 -19
  47. package/lib/query-builder.d.ts.map +0 -1
  48. package/lib/sqlite-manager.d.ts +0 -11
  49. package/lib/sqlite-manager.d.ts.map +0 -1
  50. package/scripts/obfuscate.mjs +0 -155
  51. package/scripts/version-manager.js +0 -317
@@ -1 +1 @@
1
- {"version":3,"file":"base-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/base-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAgB,MAAM,UAAU,CAAC;AACzE,8BAAsB,WAAY,YAAW,aAAa;IACxD,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IACzD,QAAQ,CAAC,WAAW,IAAI,OAAO;IAE/B,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAK1C,SAAS,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,MAAM;CAoB9D"}
1
+ {"version":3,"file":"base-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/base-adapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC3D,8BAAsB,WAAY,YAAW,aAAa;IACxD,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IACzD,QAAQ,CAAC,WAAW,IAAI,OAAO;IAE/B,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAI1C,SAAS,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,MAAM;CAoB9D"}
@@ -0,0 +1,2 @@
1
+ export * from './base-adapter';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,119 @@
1
+ import { QueryTable, WhereClause, OrderByClause, ImportResult, ColumnMapping, ImportOptions, ServiceStatus, HealthCheckResult } from "../types";
2
+ import { UniversalDAO } from "./universal-dao";
3
+ export interface FindOptions {
4
+ where?: WhereClause[];
5
+ orderBy?: OrderByClause[];
6
+ limit?: number;
7
+ offset?: number;
8
+ columns?: string[];
9
+ }
10
+ export type ErrorHandler = (error: Error) => void;
11
+ export type EventHandler = (data: any) => void;
12
+ /**
13
+ * Universal BaseService - An enhanced abstract base class designed to provide
14
+ * comprehensive CRUD operations and database management features across all
15
+ * operating systems and frameworks using TypeScript and JavaScript.
16
+ */
17
+ export declare abstract class BaseService<T = any> {
18
+ protected dao: UniversalDAO | null;
19
+ protected schemaName: string;
20
+ protected tableName: string;
21
+ protected isOpened: boolean;
22
+ protected isInitialized: boolean;
23
+ protected errorHandlers: Map<string, ErrorHandler>;
24
+ protected eventListeners: Map<string, EventHandler[]>;
25
+ protected primaryKeyFields: string[];
26
+ private cache;
27
+ private reconnectHandler;
28
+ constructor(schemaName: string, tableName?: string);
29
+ private bindMethods;
30
+ /**
31
+ * Set primary key fields for the service
32
+ */
33
+ setPrimaryKeyFields(fields: string[]): this;
34
+ /**
35
+ * Initialize the service and establish database connection
36
+ */
37
+ init(): Promise<this>;
38
+ /**
39
+ * Create a new record
40
+ */
41
+ create(data: Partial<T>): Promise<T | null>;
42
+ /**
43
+ * Update an existing record
44
+ */
45
+ update(id: any, data: Partial<T>): Promise<T | null>;
46
+ /**
47
+ * Delete a record by ID
48
+ */
49
+ delete(id: any): Promise<boolean>;
50
+ /**
51
+ * Find a record by ID
52
+ */
53
+ findById(id: any): Promise<T | null>;
54
+ /**
55
+ * Find the first record matching conditions
56
+ */
57
+ findFirst(conditions?: Record<string, any>): Promise<T | null>;
58
+ /**
59
+ * Find all records matching conditions
60
+ */
61
+ findAll(conditions?: Record<string, any>, options?: FindOptions): Promise<T[]>;
62
+ /**
63
+ * Count records matching conditions
64
+ */
65
+ count(where?: WhereClause[] | Record<string, any>): Promise<number>;
66
+ /**
67
+ * Check if a record exists by ID
68
+ */
69
+ exists(id: any): Promise<boolean>;
70
+ /**
71
+ * Truncate table (delete all records and reset auto-increment)
72
+ */
73
+ truncate(): Promise<void>;
74
+ /**
75
+ * Bulk insert records
76
+ */
77
+ bulkInsert(items: Partial<T>[]): Promise<ImportResult>;
78
+ /**
79
+ * Bulk create records with transaction support
80
+ */
81
+ bulkCreate(dataArray: Record<string, any>[]): Promise<T[]>;
82
+ /**
83
+ * Execute operations within a transaction
84
+ */
85
+ executeTransaction(callback: () => Promise<any>): Promise<any>;
86
+ /**
87
+ * Import data from CSV
88
+ */
89
+ importFromCSV(csvData: string, options?: {
90
+ delimiter?: string;
91
+ hasHeader?: boolean;
92
+ columnMappings?: ColumnMapping[];
93
+ } & Partial<ImportOptions>): Promise<ImportResult>;
94
+ /**
95
+ * Import data with column mapping
96
+ */
97
+ importDataWithMapping(data: Record<string, any>[], columnMappings: ColumnMapping[], options?: Partial<ImportOptions>): Promise<ImportResult>;
98
+ protected buildSelectTable(conditions?: Record<string, any>, options?: FindOptions): QueryTable;
99
+ protected buildDataTable(data: Record<string, any>): QueryTable;
100
+ protected buildWhereFromObject(obj: Record<string, any>): WhereClause[];
101
+ on(event: string, handler: EventHandler): this;
102
+ off(event: string, handler: EventHandler): this;
103
+ protected _emit(event: string, data: any): void;
104
+ setErrorHandler(errorType: string, handler: ErrorHandler): this;
105
+ protected _handleError(errorType: string, error: Error): void;
106
+ protected _validateData(data: any): void;
107
+ protected _ensureInitialized(): Promise<void>;
108
+ private ensureValidConnection;
109
+ getDatabaseInfo(): Promise<any>;
110
+ getTableInfo(): Promise<any[]>;
111
+ getStatus(): ServiceStatus;
112
+ healthCheck(): Promise<HealthCheckResult>;
113
+ close(): Promise<boolean>;
114
+ destroy(): void;
115
+ getAll(conditions?: Record<string, any>, options?: FindOptions): Promise<T[]>;
116
+ getById(id: string | number): Promise<T | null>;
117
+ getFirst(conditions?: Record<string, any>): Promise<T | null>;
118
+ }
119
+ //# sourceMappingURL=base-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-service.d.ts","sourceRoot":"","sources":["../../src/core/base-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,98 @@
1
+ import { SQLiteAdapter, DatabaseSchema, DbFactoryOptions } from "../types";
2
+ import { UniversalDAO } from "./universal-dao";
3
+ /**
4
+ * Universal DatabaseFactory - A powerful utility class designed to create and manage
5
+ * UniversalDAO instances from JSON schema across all operating systems and frameworks
6
+ * using TypeScript and JavaScript. It provides methods for creating new, opening existing
7
+ * databases, checking integrity, and managing database lifecycle.
8
+ */
9
+ export declare class DatabaseFactory {
10
+ private static adapters;
11
+ /**
12
+ * Register a SQLite adapter for use by the factory
13
+ * @param adapter The SQLite adapter to register
14
+ */
15
+ static registerAdapter(adapter: SQLiteAdapter): void;
16
+ /**
17
+ * Get information about the current runtime environment
18
+ * @returns A string describing the current environment
19
+ */
20
+ static getEnvironmentInfo(): string;
21
+ /**
22
+ * Detect the best available SQLite adapter for the current environment
23
+ * @returns The best available SQLite adapter
24
+ * @throws Error if no supported adapter is found
25
+ */
26
+ private static detectBestAdapter;
27
+ /**
28
+ * Validate schema version compatibility between database and config
29
+ * @param dao The UniversalDAO instance
30
+ * @param schema The database schema configuration
31
+ */
32
+ private static validateSchemaVersion;
33
+ /**
34
+ * Validate the provided schema object to ensure it has minimum required properties
35
+ * @param schema The schema object to validate
36
+ * @returns True if the schema is valid, otherwise throws an error
37
+ */
38
+ private static validateSchema;
39
+ /**
40
+ * Create a new UniversalDAO instance (equivalent to SQLiteDAO)
41
+ * @param dbPath Path to the database file
42
+ * @param options Configuration options
43
+ * @returns A new UniversalDAO instance
44
+ */
45
+ static createDAO(dbPath: string, options?: {
46
+ adapter?: SQLiteAdapter;
47
+ createIfNotExists?: boolean;
48
+ forceRecreate?: boolean;
49
+ }): UniversalDAO;
50
+ /**
51
+ * Opens an existing database without initializing its schema.
52
+ * Includes integrity check to detect corrupted files.
53
+ * @param dbName The name of the database (e.g., 'core.db' or 'core').
54
+ * @param options Additional options for database connection.
55
+ * @returns A promise that resolves to a connected UniversalDAO instance.
56
+ */
57
+ static openExisting(dbName: string, options?: Omit<DbFactoryOptions, "config" | "configAsset" | "configPath">): Promise<UniversalDAO>;
58
+ /**
59
+ * Internal method to create or open database with various options
60
+ * @param options Configuration options
61
+ * @param isForceInit Allow re-initialization of existing database
62
+ * @param isForceDelete Force delete and recreate database
63
+ * @returns Promise that resolves to initialized UniversalDAO
64
+ */
65
+ private static createOrOpenInternal;
66
+ /**
67
+ * Create a new database (DANGEROUS - will delete existing database)
68
+ * Only use this for migrations or development, not in production
69
+ * @param options Configuration options
70
+ * @returns Promise that resolves to initialized UniversalDAO
71
+ */
72
+ static create(options: DbFactoryOptions): Promise<UniversalDAO>;
73
+ /**
74
+ * Smart method to create or open database
75
+ * Only creates new tables if they don't exist and initializes file initially
76
+ * Will check if file exists and is valid before deciding to create new or open existing
77
+ * @param options Database configuration options
78
+ * @param isForceInit Force re-initialization of tables even if they exist (default: false)
79
+ * @returns Promise that resolves to initialized UniversalDAO
80
+ */
81
+ static createOrOpen(options: DbFactoryOptions, isForceInit?: boolean): Promise<UniversalDAO>;
82
+ /**
83
+ * Convenience method to create a database from a JSON asset
84
+ * @param configAsset The imported/required JSON configuration
85
+ * @param options Additional options for database creation
86
+ * @returns Promise that resolves to initialized UniversalDAO
87
+ */
88
+ static createFromAsset(configAsset: DatabaseSchema, options?: Omit<DbFactoryOptions, "config" | "configAsset" | "configPath">): Promise<UniversalDAO>;
89
+ /**
90
+ * Convenience method to create a database from a configuration object
91
+ * @param config The database schema configuration object
92
+ * @param options Additional options for database creation
93
+ * @returns Promise that resolves to initialized UniversalDAO
94
+ */
95
+ static createFromConfig(config: DatabaseSchema, options?: Omit<DbFactoryOptions, "config" | "configAsset" | "configPath">): Promise<UniversalDAO>;
96
+ }
97
+ export default DatabaseFactory;
98
+ //# sourceMappingURL=database-factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database-factory.d.ts","sourceRoot":"","sources":["../../src/core/database-factory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C;;;;;GAKG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAuB;IAE9C;;;OAGG;IACH,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAIpD;;;OAGG;IACH,MAAM,CAAC,kBAAkB,IAAI,MAAM;IAcnC;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAShC;;;;OAIG;mBACkB,qBAAqB;IAoB1C;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAwB7B;;;;;OAKG;IACH,MAAM,CAAC,SAAS,CACd,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;QACR,OAAO,CAAC,EAAE,aAAa,CAAC;QACxB,iBAAiB,CAAC,EAAE,OAAO,CAAC;QAC5B,aAAa,CAAC,EAAE,OAAO,CAAC;KACzB,GACA,YAAY;IAef;;;;;;OAMG;WACiB,YAAY,CAC9B,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,IAAI,CACX,gBAAgB,EAChB,QAAQ,GAAG,aAAa,GAAG,YAAY,CACnC,GACL,OAAO,CAAC,YAAY,CAAC;IAoBxB;;;;;;OAMG;mBACkB,oBAAoB;IA2DzC;;;;;OAKG;WACiB,MAAM,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC;IAI5E;;;;;;;OAOG;WACiB,YAAY,CAC9B,OAAO,EAAE,gBAAgB,EACzB,WAAW,GAAE,OAAe,GAC3B,OAAO,CAAC,YAAY,CAAC;IAIxB;;;;;OAKG;WACiB,eAAe,CACjC,WAAW,EAAE,cAAc,EAC3B,OAAO,GAAE,IAAI,CACX,gBAAgB,EAChB,QAAQ,GAAG,aAAa,GAAG,YAAY,CACnC,GACL,OAAO,CAAC,YAAY,CAAC;IAaxB;;;;;OAKG;WACiB,gBAAgB,CAClC,MAAM,EAAE,cAAc,EACtB,OAAO,GAAE,IAAI,CACX,gBAAgB,EAChB,QAAQ,GAAG,aAAa,GAAG,YAAY,CACnC,GACL,OAAO,CAAC,YAAY,CAAC;CAYzB;AAED,eAAe,eAAe,CAAC"}
@@ -0,0 +1,208 @@
1
+ import { DatabaseSchema, ImportOptions, ImportResult, ColumnMapping } from "../types";
2
+ import { UniversalDAO } from "./universal-dao";
3
+ export type DatabaseConnections = {
4
+ [key: string]: UniversalDAO;
5
+ };
6
+ export interface RoleConfig {
7
+ roleName: string;
8
+ requiredDatabases: string[];
9
+ optionalDatabases?: string[];
10
+ priority?: number;
11
+ }
12
+ export type RoleRegistry = {
13
+ [roleName: string]: RoleConfig;
14
+ };
15
+ export interface DatabaseImportConfig {
16
+ databaseKey: string;
17
+ tableName: string;
18
+ data: Record<string, any>[];
19
+ options?: Partial<ImportOptions>;
20
+ columnMappings?: ColumnMapping[];
21
+ }
22
+ export interface BulkImportResult {
23
+ totalDatabases: number;
24
+ successDatabases: number;
25
+ results: Record<string, ImportResult>;
26
+ errors: Record<string, Error>;
27
+ executionTime: number;
28
+ }
29
+ export interface SchemaManager {
30
+ getSchema(key: string): DatabaseSchema | undefined;
31
+ registerSchema(key: string, schema: DatabaseSchema): void;
32
+ getAllSchemaKeys(): string[];
33
+ hasSchema(key: string): boolean;
34
+ }
35
+ export declare class DatabaseManager {
36
+ private static maxConnections;
37
+ private static connections;
38
+ private static isInitialized;
39
+ private static roleRegistry;
40
+ private static currentRole;
41
+ private static currentUserRoles;
42
+ private static activeDatabases;
43
+ private static isClosingConnections;
44
+ private static schemaConfigurations;
45
+ private static schemaManager;
46
+ private static eventListeners;
47
+ /**
48
+ * Set a schema manager for dynamic schema handling
49
+ */
50
+ static setSchemaManager(manager: SchemaManager): void;
51
+ /**
52
+ * Register a schema configuration dynamically
53
+ */
54
+ static registerSchema(key: string, schema: DatabaseSchema): void;
55
+ /**
56
+ * Register multiple schemas at once
57
+ */
58
+ static registerSchemas(schemas: Record<string, DatabaseSchema>): void;
59
+ /**
60
+ * Get schema from internal store or external manager
61
+ */
62
+ private static getSchema;
63
+ /**
64
+ * Get all available schema keys
65
+ */
66
+ static getAvailableSchemas(): string[];
67
+ /**
68
+ * Register a role configuration
69
+ */
70
+ static registerRole(roleConfig: RoleConfig): void;
71
+ /**
72
+ * Register multiple roles
73
+ */
74
+ static registerRoles(roleConfigs: RoleConfig[]): void;
75
+ /**
76
+ * Get all registered roles
77
+ */
78
+ static getRegisteredRoles(): RoleRegistry;
79
+ /**
80
+ * Get databases for a specific role
81
+ */
82
+ static getRoleDatabases(roleName: string): string[];
83
+ /**
84
+ * Get databases for current user roles
85
+ */
86
+ static getCurrentUserDatabases(): string[];
87
+ /**
88
+ * Initialize core database connection
89
+ */
90
+ static initializeCoreConnection(): Promise<void>;
91
+ /**
92
+ * Set current user roles and initialize connections
93
+ */
94
+ static setCurrentUserRoles(userRoles: string[], primaryRole?: string): Promise<void>;
95
+ /**
96
+ * Get current user roles
97
+ */
98
+ static getCurrentUserRoles(): string[];
99
+ /**
100
+ * Get current primary role
101
+ */
102
+ static getCurrentRole(): string | null;
103
+ /**
104
+ * Initialize connections for current user roles
105
+ */
106
+ private static initializeUserRoleConnections;
107
+ /**
108
+ * Cleanup unused connections
109
+ */
110
+ private static cleanupUnusedConnections;
111
+ /**
112
+ * Check if current user has access to database
113
+ */
114
+ static hasAccessToDatabase(dbKey: string): boolean;
115
+ /**
116
+ * Get database connection
117
+ */
118
+ static get(key: string): UniversalDAO;
119
+ /**
120
+ * Register event listener for database reconnection
121
+ */
122
+ static onDatabaseReconnect(schemaName: string, callback: (dao: UniversalDAO) => void): void;
123
+ /**
124
+ * Remove event listener for database reconnection
125
+ */
126
+ static offDatabaseReconnect(schemaName: string, callback: (dao: UniversalDAO) => void): void;
127
+ /**
128
+ * Notify listeners of database reconnection
129
+ */
130
+ private static notifyDatabaseReconnect;
131
+ /**
132
+ * Close all connections
133
+ */
134
+ private static closeAllConnections;
135
+ /**
136
+ * Reopen connections
137
+ */
138
+ static reopenConnections(): Promise<void>;
139
+ /**
140
+ * Ensure database connection exists and is active
141
+ */
142
+ static ensureDatabaseConnection(key: string): Promise<UniversalDAO>;
143
+ /**
144
+ * Get all connections
145
+ */
146
+ static getConnections(): DatabaseConnections;
147
+ /**
148
+ * Open all existing databases
149
+ */
150
+ static openAllExisting(databaseKeys: string[]): Promise<boolean>;
151
+ /**
152
+ * Initialize databases lazily
153
+ */
154
+ static initLazySchema(databaseKeys: string[]): Promise<boolean>;
155
+ /**
156
+ * Initialize all available databases
157
+ */
158
+ static initializeAll(): Promise<void>;
159
+ /**
160
+ * Get database with lazy loading
161
+ */
162
+ static getLazyLoading(key: string): Promise<UniversalDAO>;
163
+ /**
164
+ * Execute cross-schema transaction
165
+ */
166
+ static executeCrossSchemaTransaction(schemas: string[], callback: (daos: Record<string, UniversalDAO>) => Promise<void>): Promise<void>;
167
+ /**
168
+ * Import data to table
169
+ */
170
+ static importDataToTable(databaseKey: string, tableName: string, data: Record<string, any>[], options?: Partial<ImportOptions>): Promise<ImportResult>;
171
+ /**
172
+ * Import data with column mapping
173
+ */
174
+ static importDataWithMapping(databaseKey: string, tableName: string, data: Record<string, any>[], columnMappings: ColumnMapping[], options?: Partial<ImportOptions>): Promise<ImportResult>;
175
+ /**
176
+ * Bulk import data
177
+ */
178
+ static bulkImport(importConfigs: DatabaseImportConfig[]): Promise<BulkImportResult>;
179
+ /**
180
+ * Import from CSV
181
+ */
182
+ static importFromCSV(databaseKey: string, tableName: string, csvData: string, options?: {
183
+ delimiter?: string;
184
+ hasHeader?: boolean;
185
+ columnMappings?: ColumnMapping[];
186
+ } & Partial<ImportOptions>): Promise<ImportResult>;
187
+ /**
188
+ * Get connection count
189
+ */
190
+ static getConnectionCount(): number;
191
+ /**
192
+ * List all active connections
193
+ */
194
+ static listConnections(): string[];
195
+ /**
196
+ * Close specific connection
197
+ */
198
+ static closeConnection(dbKey: string): Promise<void>;
199
+ /**
200
+ * Close all connections and reset state
201
+ */
202
+ static closeAll(): Promise<void>;
203
+ /**
204
+ * Logout user - close role-specific connections
205
+ */
206
+ static logout(): Promise<void>;
207
+ }
208
+ //# sourceMappingURL=database-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database-manager.d.ts","sourceRoot":"","sources":["../../src/core/database-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export * from './base-service';
2
+ export * from './database-factory';
3
+ export * from './database-manager';
4
+ export * from './universal-dao';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,64 @@
1
+ import { DatabaseSchema, ImportOptions, ImportResult, QueryTable, SQLiteAdapter, SQLiteResult, SQLiteRow, TypeMappingConfig, ColumnMapping } from "../types";
2
+ export declare class UniversalDAO {
3
+ private adapter;
4
+ private dbPath;
5
+ private options?;
6
+ private connection;
7
+ private isConnected;
8
+ private inTransaction;
9
+ private typeMappingConfig;
10
+ private createIfNotExists;
11
+ private forceRecreate;
12
+ constructor(adapter: SQLiteAdapter, dbPath: string, options?: {
13
+ createIfNotExists?: boolean;
14
+ forceRecreate?: boolean;
15
+ } | undefined);
16
+ connect(): Promise<void>;
17
+ disconnect(): Promise<void>;
18
+ close(): Promise<void>;
19
+ setTypeMappingConfig(config: TypeMappingConfig["type_mapping"]): void;
20
+ private convertToSQLiteType;
21
+ private getDefaultSQLiteType;
22
+ private processColumnDefinition;
23
+ initializeFromSchema(schema: DatabaseSchema): Promise<void>;
24
+ private dropAllTables;
25
+ private createTableWithForeignKeys;
26
+ private createIndexesForTable;
27
+ beginTransaction(): Promise<void>;
28
+ commitTransaction(): Promise<void>;
29
+ rollbackTransaction(): Promise<void>;
30
+ getSchemaVersion(): Promise<string>;
31
+ setSchemaVersion(version: string): Promise<void>;
32
+ insert(insertTable: QueryTable): Promise<SQLiteResult>;
33
+ update(updateTable: QueryTable): Promise<SQLiteResult>;
34
+ delete(deleteTable: QueryTable): Promise<SQLiteResult>;
35
+ select(selectTable: QueryTable): Promise<SQLiteRow>;
36
+ selectAll(selectTable: QueryTable): Promise<SQLiteRow[]>;
37
+ private buildSelectQuery;
38
+ private buildWhereClause;
39
+ convertJsonToQueryTable(tableName: string, json: Record<string, any>, idFields?: string[]): QueryTable;
40
+ importData(options: ImportOptions): Promise<ImportResult>;
41
+ importDataWithMapping(tableName: string, data: Record<string, any>[], columnMappings: ColumnMapping[], options?: Partial<ImportOptions>): Promise<ImportResult>;
42
+ importFromCSV(tableName: string, csvData: string, options?: {
43
+ delimiter?: string;
44
+ hasHeader?: boolean;
45
+ columnMappings?: ColumnMapping[];
46
+ } & Partial<ImportOptions>): Promise<ImportResult>;
47
+ private validateAndTransformRow;
48
+ private transformRowData;
49
+ private findValueForColumn;
50
+ private convertValueToColumnType;
51
+ private insertRow;
52
+ private insertOrUpdate;
53
+ private updateRowByColumns;
54
+ private isConflictError;
55
+ getDatabaseInfo(): Promise<any>;
56
+ getTableInfo(tableName: string): Promise<any[]>;
57
+ dropTable(tableName: string): Promise<void>;
58
+ isConnectionOpen(): boolean;
59
+ ensureConnected(): Promise<void>;
60
+ execute(sql: string, params?: any[]): Promise<SQLiteResult>;
61
+ getRst(sql: string, params?: any[]): Promise<SQLiteRow>;
62
+ getRsts(sql: string, params?: any[]): Promise<SQLiteRow[]>;
63
+ }
64
+ //# sourceMappingURL=universal-dao.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"universal-dao.d.ts","sourceRoot":"","sources":["../../src/core/universal-dao.ts"],"names":[],"mappings":"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"}