@dqcai/sqlite 1.0.0 → 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 +434 -2522
- package/lib/adapters/base-adapter.d.ts.map +1 -1
- package/lib/adapters/index.d.ts +2 -0
- package/lib/adapters/index.d.ts.map +1 -0
- package/lib/core/base-service.d.ts +132 -0
- package/lib/core/base-service.d.ts.map +1 -0
- package/lib/core/database-factory.d.ts +98 -0
- package/lib/core/database-factory.d.ts.map +1 -0
- package/lib/core/database-manager.d.ts +208 -0
- package/lib/core/database-manager.d.ts.map +1 -0
- package/lib/core/index.d.ts +5 -0
- package/lib/core/index.d.ts.map +1 -0
- package/lib/core/universal-dao.d.ts +64 -0
- package/lib/core/universal-dao.d.ts.map +1 -0
- package/lib/index.d.ts +324 -14
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/index.mjs +45 -1
- package/lib/index.mjs.map +1 -1
- package/lib/index.umd.js +1 -1
- package/lib/index.umd.js.map +1 -1
- package/lib/query/query-builder.d.ts +120 -0
- package/lib/query/query-builder.d.ts.map +1 -0
- package/lib/types.d.ts +126 -4
- package/lib/types.d.ts.map +1 -1
- package/lib/utils/csv-import.d.ts +102 -0
- package/lib/utils/csv-import.d.ts.map +1 -0
- package/lib/utils/index.d.ts +3 -0
- package/lib/utils/index.d.ts.map +1 -0
- package/lib/utils/migration-manager.d.ts +184 -0
- package/lib/utils/migration-manager.d.ts.map +1 -0
- package/package.json +83 -63
- package/README-all-source.md +0 -1248
- package/README-ps-gemini.md +0 -1180
- package/lib/adapters/browser-adapter.d.ts +0 -17
- package/lib/adapters/browser-adapter.d.ts.map +0 -1
- package/lib/adapters/bun-adapter.d.ts +0 -7
- package/lib/adapters/bun-adapter.d.ts.map +0 -1
- package/lib/adapters/deno-adapter.d.ts +0 -7
- package/lib/adapters/deno-adapter.d.ts.map +0 -1
- package/lib/adapters/node-adapter.d.ts +0 -7
- package/lib/adapters/node-adapter.d.ts.map +0 -1
- package/lib/adapters/react-native-adapter.d.ts +0 -20
- package/lib/adapters/react-native-adapter.d.ts.map +0 -1
- package/lib/query-builder.d.ts +0 -19
- package/lib/query-builder.d.ts.map +0 -1
- package/lib/sqlite-manager.d.ts +0 -11
- package/lib/sqlite-manager.d.ts.map +0 -1
- package/scripts/obfuscate.mjs +0 -155
- package/scripts/version-manager.js +0 -317
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { UniversalDAO } from '../core/universal-dao';
|
|
2
|
+
import { SQLiteRow } from '../types';
|
|
3
|
+
export interface QueryCondition {
|
|
4
|
+
field: string;
|
|
5
|
+
operator: string;
|
|
6
|
+
value: any;
|
|
7
|
+
}
|
|
8
|
+
export interface JoinClause {
|
|
9
|
+
type: 'INNER' | 'LEFT' | 'RIGHT' | 'FULL OUTER';
|
|
10
|
+
table: string;
|
|
11
|
+
condition: string;
|
|
12
|
+
}
|
|
13
|
+
export interface SubQuery {
|
|
14
|
+
query: QueryBuilder;
|
|
15
|
+
alias: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Enhanced QueryBuilder with advanced SQL query construction capabilities
|
|
19
|
+
*/
|
|
20
|
+
export declare class QueryBuilder {
|
|
21
|
+
private tableName;
|
|
22
|
+
private selectFields;
|
|
23
|
+
private joinClauses;
|
|
24
|
+
private whereConditions;
|
|
25
|
+
private groupByFields;
|
|
26
|
+
private havingConditions;
|
|
27
|
+
private orderByFields;
|
|
28
|
+
private limitValue;
|
|
29
|
+
private offsetValue;
|
|
30
|
+
private params;
|
|
31
|
+
private unionQueries;
|
|
32
|
+
private subQueries;
|
|
33
|
+
private cteQueries;
|
|
34
|
+
private dao;
|
|
35
|
+
constructor(dao?: UniversalDAO);
|
|
36
|
+
static table(name: string, dao?: UniversalDAO): QueryBuilder;
|
|
37
|
+
static from(name: string, dao?: UniversalDAO): QueryBuilder;
|
|
38
|
+
select(fields: string | string[]): QueryBuilder;
|
|
39
|
+
selectRaw(raw: string): QueryBuilder;
|
|
40
|
+
selectDistinct(fields: string | string[]): QueryBuilder;
|
|
41
|
+
join(table: string, condition: string, type?: JoinClause['type']): QueryBuilder;
|
|
42
|
+
innerJoin(table: string, condition: string): QueryBuilder;
|
|
43
|
+
leftJoin(table: string, condition: string): QueryBuilder;
|
|
44
|
+
rightJoin(table: string, condition: string): QueryBuilder;
|
|
45
|
+
fullOuterJoin(table: string, condition: string): QueryBuilder;
|
|
46
|
+
where(field: string, operator: string, value?: any): QueryBuilder;
|
|
47
|
+
where(field: string, value: any): QueryBuilder;
|
|
48
|
+
where(conditions: Record<string, any>): QueryBuilder;
|
|
49
|
+
whereEquals(field: string, value: any): QueryBuilder;
|
|
50
|
+
whereNot(field: string, value: any): QueryBuilder;
|
|
51
|
+
whereLike(field: string, value: string): QueryBuilder;
|
|
52
|
+
whereNotLike(field: string, value: string): QueryBuilder;
|
|
53
|
+
whereIn(field: string, values: any[]): QueryBuilder;
|
|
54
|
+
whereNotIn(field: string, values: any[]): QueryBuilder;
|
|
55
|
+
whereBetween(field: string, min: any, max: any): QueryBuilder;
|
|
56
|
+
whereNotBetween(field: string, min: any, max: any): QueryBuilder;
|
|
57
|
+
whereNull(field: string): QueryBuilder;
|
|
58
|
+
whereNotNull(field: string): QueryBuilder;
|
|
59
|
+
whereExists(subquery: QueryBuilder): QueryBuilder;
|
|
60
|
+
whereNotExists(subquery: QueryBuilder): QueryBuilder;
|
|
61
|
+
orWhere(field: string, operator: string, value?: any): QueryBuilder;
|
|
62
|
+
orWhere(field: string, value: any): QueryBuilder;
|
|
63
|
+
groupBy(fields: string | string[]): QueryBuilder;
|
|
64
|
+
having(field: string, operator: string, value?: any): QueryBuilder;
|
|
65
|
+
havingCount(field: string, operator: string, value: number): QueryBuilder;
|
|
66
|
+
orderBy(field: string, direction?: 'ASC' | 'DESC'): QueryBuilder;
|
|
67
|
+
orderByDesc(field: string): QueryBuilder;
|
|
68
|
+
orderByRaw(raw: string): QueryBuilder;
|
|
69
|
+
latest(field?: string): QueryBuilder;
|
|
70
|
+
oldest(field?: string): QueryBuilder;
|
|
71
|
+
limit(count: number): QueryBuilder;
|
|
72
|
+
offset(count: number): QueryBuilder;
|
|
73
|
+
skip(count: number): QueryBuilder;
|
|
74
|
+
take(count: number): QueryBuilder;
|
|
75
|
+
firstRow(): QueryBuilder;
|
|
76
|
+
paginate(page: number, perPage: number): QueryBuilder;
|
|
77
|
+
union(query: QueryBuilder): QueryBuilder;
|
|
78
|
+
unionAll(query: QueryBuilder): QueryBuilder;
|
|
79
|
+
with(alias: string, query: QueryBuilder): QueryBuilder;
|
|
80
|
+
whereSubQuery(field: string, operator: string, subquery: QueryBuilder): QueryBuilder;
|
|
81
|
+
count(field?: string): QueryBuilder;
|
|
82
|
+
sum(field: string): QueryBuilder;
|
|
83
|
+
avg(field: string): QueryBuilder;
|
|
84
|
+
max(field: string): QueryBuilder;
|
|
85
|
+
min(field: string): QueryBuilder;
|
|
86
|
+
toSQL(): {
|
|
87
|
+
sql: string;
|
|
88
|
+
params: any[];
|
|
89
|
+
};
|
|
90
|
+
private buildCondition;
|
|
91
|
+
get(): Promise<SQLiteRow[]>;
|
|
92
|
+
first(): Promise<SQLiteRow | null>;
|
|
93
|
+
pluck(column: string): Promise<any[]>;
|
|
94
|
+
exists(): Promise<boolean>;
|
|
95
|
+
countResult(): Promise<number>;
|
|
96
|
+
static insert(tableName: string, data: Record<string, any>): {
|
|
97
|
+
sql: string;
|
|
98
|
+
params: any[];
|
|
99
|
+
};
|
|
100
|
+
static insertMany(tableName: string, dataArray: Record<string, any>[]): {
|
|
101
|
+
sql: string;
|
|
102
|
+
params: any[];
|
|
103
|
+
};
|
|
104
|
+
static update(tableName: string, data: Record<string, any>, where: string, whereParams?: any[]): {
|
|
105
|
+
sql: string;
|
|
106
|
+
params: any[];
|
|
107
|
+
};
|
|
108
|
+
static delete(tableName: string, where: string, whereParams?: any[]): {
|
|
109
|
+
sql: string;
|
|
110
|
+
params: any[];
|
|
111
|
+
};
|
|
112
|
+
static upsert(tableName: string, data: Record<string, any>, conflictColumns: string[]): {
|
|
113
|
+
sql: string;
|
|
114
|
+
params: any[];
|
|
115
|
+
};
|
|
116
|
+
clone(): QueryBuilder;
|
|
117
|
+
toRawSQL(): string;
|
|
118
|
+
explain(): QueryBuilder;
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=query-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-builder.d.ts","sourceRoot":"","sources":["../../src/query/query-builder.ts"],"names":[],"mappings":"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"}
|
package/lib/types.d.ts
CHANGED
|
@@ -14,10 +14,129 @@ export interface SQLiteAdapter {
|
|
|
14
14
|
connect(path: string): Promise<SQLiteConnection>;
|
|
15
15
|
isSupported(): boolean;
|
|
16
16
|
}
|
|
17
|
-
export interface
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
17
|
+
export interface TypeMappingConfig {
|
|
18
|
+
type_mapping: {
|
|
19
|
+
[targetType: string]: {
|
|
20
|
+
[sourceType: string]: string;
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
export interface ColumnDefinition {
|
|
25
|
+
name: string;
|
|
26
|
+
type: string;
|
|
27
|
+
option_key?: string;
|
|
28
|
+
description?: string;
|
|
29
|
+
nullable?: boolean;
|
|
30
|
+
default?: any;
|
|
31
|
+
primary_key?: boolean;
|
|
32
|
+
auto_increment?: boolean;
|
|
33
|
+
unique?: boolean;
|
|
34
|
+
constraints?: string;
|
|
35
|
+
length?: number;
|
|
36
|
+
}
|
|
37
|
+
export interface Column {
|
|
38
|
+
name: string;
|
|
39
|
+
value?: any;
|
|
40
|
+
}
|
|
41
|
+
export interface WhereClause {
|
|
42
|
+
name: string;
|
|
43
|
+
value: any;
|
|
44
|
+
operator?: string;
|
|
45
|
+
}
|
|
46
|
+
export interface OrderByClause {
|
|
47
|
+
name: string;
|
|
48
|
+
direction?: "ASC" | "DESC";
|
|
49
|
+
}
|
|
50
|
+
export interface LimitOffset {
|
|
51
|
+
limit?: number;
|
|
52
|
+
offset?: number;
|
|
53
|
+
}
|
|
54
|
+
export interface QueryTable {
|
|
55
|
+
name: string;
|
|
56
|
+
cols: Column[];
|
|
57
|
+
wheres?: WhereClause[];
|
|
58
|
+
orderbys?: OrderByClause[];
|
|
59
|
+
limitOffset?: LimitOffset;
|
|
60
|
+
}
|
|
61
|
+
export interface JoinClause {
|
|
62
|
+
type: "INNER" | "LEFT" | "RIGHT" | "FULL";
|
|
63
|
+
table: string;
|
|
64
|
+
on: string;
|
|
65
|
+
}
|
|
66
|
+
export interface IndexDefinition {
|
|
67
|
+
name: string;
|
|
68
|
+
columns: string[];
|
|
69
|
+
unique?: boolean;
|
|
70
|
+
description?: string;
|
|
71
|
+
}
|
|
72
|
+
export type ForeignKeyAction = "CASCADE" | "RESTRICT" | "SET NULL" | "NO ACTION" | undefined;
|
|
73
|
+
export interface ForeignKeyDefinition {
|
|
74
|
+
name: string;
|
|
75
|
+
column: string;
|
|
76
|
+
references: {
|
|
77
|
+
table: string;
|
|
78
|
+
column: string;
|
|
79
|
+
};
|
|
80
|
+
on_delete?: string | ForeignKeyAction;
|
|
81
|
+
on_update?: string | ForeignKeyAction;
|
|
82
|
+
description?: string;
|
|
83
|
+
}
|
|
84
|
+
export interface TableDefinition {
|
|
85
|
+
name: string;
|
|
86
|
+
cols: ColumnDefinition[];
|
|
87
|
+
description?: string;
|
|
88
|
+
indexes?: IndexDefinition[];
|
|
89
|
+
foreign_keys?: ForeignKeyDefinition[];
|
|
90
|
+
}
|
|
91
|
+
export interface DatabaseSchema {
|
|
92
|
+
version: string;
|
|
93
|
+
database_name: string;
|
|
94
|
+
description?: string;
|
|
95
|
+
type_mapping?: TypeMappingConfig["type_mapping"];
|
|
96
|
+
schemas: Record<string, {
|
|
97
|
+
description?: string;
|
|
98
|
+
cols: ColumnDefinition[];
|
|
99
|
+
indexes?: IndexDefinition[];
|
|
100
|
+
foreign_keys?: ForeignKeyDefinition[];
|
|
101
|
+
}>;
|
|
102
|
+
}
|
|
103
|
+
export interface TransactionOperation {
|
|
104
|
+
type: "insert" | "update" | "delete" | "select";
|
|
105
|
+
table: QueryTable;
|
|
106
|
+
}
|
|
107
|
+
export interface ImportOptions {
|
|
108
|
+
tableName: string;
|
|
109
|
+
data: Record<string, any>[];
|
|
110
|
+
batchSize?: number;
|
|
111
|
+
onProgress?: (processed: number, total: number) => void;
|
|
112
|
+
onError?: (error: Error, rowIndex: number, rowData: Record<string, any>) => void;
|
|
113
|
+
skipErrors?: boolean;
|
|
114
|
+
validateData?: boolean;
|
|
115
|
+
updateOnConflict?: boolean;
|
|
116
|
+
conflictColumns?: string[];
|
|
117
|
+
includeAutoIncrementPK?: boolean;
|
|
118
|
+
}
|
|
119
|
+
export interface ImportResult {
|
|
120
|
+
totalRows: number;
|
|
121
|
+
successRows: number;
|
|
122
|
+
errorRows: number;
|
|
123
|
+
errors: Array<{
|
|
124
|
+
rowIndex: number;
|
|
125
|
+
error: string;
|
|
126
|
+
rowData: Record<string, any>;
|
|
127
|
+
}>;
|
|
128
|
+
executionTime: number;
|
|
129
|
+
}
|
|
130
|
+
export interface ColumnMapping {
|
|
131
|
+
sourceColumn: string;
|
|
132
|
+
targetColumn: string;
|
|
133
|
+
transform?: (value: any) => any;
|
|
134
|
+
}
|
|
135
|
+
export interface DbFactoryOptions {
|
|
136
|
+
config?: DatabaseSchema;
|
|
137
|
+
configAsset?: any;
|
|
138
|
+
dbDirectory?: string;
|
|
139
|
+
adapter?: SQLiteAdapter;
|
|
21
140
|
}
|
|
22
141
|
declare global {
|
|
23
142
|
interface Window {
|
|
@@ -27,6 +146,8 @@ declare global {
|
|
|
27
146
|
}
|
|
28
147
|
var Deno: {
|
|
29
148
|
env: any;
|
|
149
|
+
readTextFile?: (path: string) => Promise<string>;
|
|
150
|
+
writeTextFile?: (path: string, data: string) => Promise<void>;
|
|
30
151
|
version?: {
|
|
31
152
|
deno: string;
|
|
32
153
|
};
|
|
@@ -37,6 +158,7 @@ declare global {
|
|
|
37
158
|
[key: string]: any;
|
|
38
159
|
} | undefined;
|
|
39
160
|
var Windows: any;
|
|
161
|
+
var process: any;
|
|
40
162
|
var Platform: {
|
|
41
163
|
OS: string;
|
|
42
164
|
Version?: string;
|
package/lib/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,SAAS;IACxB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,SAAS,EAAE,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC5D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACjD,WAAW,IAAI,OAAO,CAAC;CACxB;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { UniversalDAO } from '../core/universal-dao';
|
|
2
|
+
import { ImportOptions, ImportResult, ColumnMapping } from '../types';
|
|
3
|
+
export interface CSVParseOptions {
|
|
4
|
+
delimiter?: string;
|
|
5
|
+
quote?: string;
|
|
6
|
+
escape?: string;
|
|
7
|
+
hasHeader?: boolean;
|
|
8
|
+
skipEmptyLines?: boolean;
|
|
9
|
+
trimWhitespace?: boolean;
|
|
10
|
+
encoding?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface CSVImportOptions extends CSVParseOptions {
|
|
13
|
+
columnMappings?: Record<string, string> | ColumnMapping[];
|
|
14
|
+
transform?: Record<string, (value: any, row: Record<string, any>, index: number) => any>;
|
|
15
|
+
validate?: Record<string, (value: any, row: Record<string, any>, index: number) => boolean | string>;
|
|
16
|
+
onRowParsed?: (row: Record<string, any>, index: number) => Record<string, any> | null;
|
|
17
|
+
onRowError?: (error: Error, row: Record<string, any>, index: number) => boolean;
|
|
18
|
+
maxRows?: number;
|
|
19
|
+
startFromRow?: number;
|
|
20
|
+
dateFormats?: string[];
|
|
21
|
+
booleanValues?: {
|
|
22
|
+
true: string[];
|
|
23
|
+
false: string[];
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
export interface CSVParseResult {
|
|
27
|
+
data: Record<string, any>[];
|
|
28
|
+
headers: string[];
|
|
29
|
+
totalRows: number;
|
|
30
|
+
parsedRows: number;
|
|
31
|
+
skippedRows: number;
|
|
32
|
+
errors: Array<{
|
|
33
|
+
row: number;
|
|
34
|
+
column?: string;
|
|
35
|
+
error: string;
|
|
36
|
+
rawData?: string;
|
|
37
|
+
}>;
|
|
38
|
+
}
|
|
39
|
+
export declare class CSVImporter {
|
|
40
|
+
private dao;
|
|
41
|
+
constructor(dao: UniversalDAO);
|
|
42
|
+
/**
|
|
43
|
+
* Parse CSV string into structured data
|
|
44
|
+
*/
|
|
45
|
+
parseCSV(csvData: string, options?: CSVParseOptions): CSVParseResult;
|
|
46
|
+
/**
|
|
47
|
+
* Advanced CSV import with comprehensive options
|
|
48
|
+
*/
|
|
49
|
+
importFromCSV(tableName: string, csvData: string, options?: CSVImportOptions & Partial<ImportOptions>): Promise<ImportResult & {
|
|
50
|
+
parseResult: CSVParseResult;
|
|
51
|
+
}>;
|
|
52
|
+
/**
|
|
53
|
+
* Import CSV from file path (Node.js/Deno environments)
|
|
54
|
+
*/
|
|
55
|
+
importFromFile(tableName: string, filePath: string, options?: CSVImportOptions & Partial<ImportOptions>): Promise<ImportResult & {
|
|
56
|
+
parseResult: CSVParseResult;
|
|
57
|
+
}>;
|
|
58
|
+
/**
|
|
59
|
+
* Export table data to CSV format
|
|
60
|
+
*/
|
|
61
|
+
exportToCSV(tableName: string, options?: {
|
|
62
|
+
columns?: string[];
|
|
63
|
+
where?: string;
|
|
64
|
+
orderBy?: string;
|
|
65
|
+
limit?: number;
|
|
66
|
+
delimiter?: string;
|
|
67
|
+
quote?: string;
|
|
68
|
+
includeHeaders?: boolean;
|
|
69
|
+
dateFormat?: string;
|
|
70
|
+
nullValue?: string;
|
|
71
|
+
}): Promise<string>;
|
|
72
|
+
private splitCSVLines;
|
|
73
|
+
private parseCSVRow;
|
|
74
|
+
private formatCSVRow;
|
|
75
|
+
private applyColumnMappings;
|
|
76
|
+
private autoConvertTypes;
|
|
77
|
+
private convertValue;
|
|
78
|
+
private parseDate;
|
|
79
|
+
private formatDate;
|
|
80
|
+
/**
|
|
81
|
+
* Static utility methods for parsing CSV values
|
|
82
|
+
*/
|
|
83
|
+
static parseCSVValue(value: string, options?: {
|
|
84
|
+
autoConvert?: boolean;
|
|
85
|
+
booleanValues?: {
|
|
86
|
+
true: string[];
|
|
87
|
+
false: string[];
|
|
88
|
+
};
|
|
89
|
+
dateFormats?: string[];
|
|
90
|
+
}): any;
|
|
91
|
+
/**
|
|
92
|
+
* Validate CSV structure
|
|
93
|
+
*/
|
|
94
|
+
static validateCSVStructure(csvData: string, options?: CSVParseOptions): {
|
|
95
|
+
isValid: boolean;
|
|
96
|
+
errors: string[];
|
|
97
|
+
rowCount: number;
|
|
98
|
+
columnCount: number;
|
|
99
|
+
headers: string[];
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=csv-import.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"csv-import.d.ts","sourceRoot":"","sources":["../../src/utils/csv-import.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import { UniversalDAO } from '../core/universal-dao';
|
|
2
|
+
import { DatabaseSchema, ColumnDefinition } from '../types';
|
|
3
|
+
export interface Migration {
|
|
4
|
+
version: string;
|
|
5
|
+
description: string;
|
|
6
|
+
up: (dao: UniversalDAO) => Promise<void>;
|
|
7
|
+
down: (dao: UniversalDAO) => Promise<void>;
|
|
8
|
+
dependencies?: string[];
|
|
9
|
+
category?: string;
|
|
10
|
+
}
|
|
11
|
+
export interface MigrationRecord {
|
|
12
|
+
version: string;
|
|
13
|
+
description: string;
|
|
14
|
+
category?: string;
|
|
15
|
+
applied_at: string;
|
|
16
|
+
execution_time_ms: number;
|
|
17
|
+
checksum?: string;
|
|
18
|
+
}
|
|
19
|
+
export interface MigrationStatus {
|
|
20
|
+
version: string;
|
|
21
|
+
description: string;
|
|
22
|
+
category?: string;
|
|
23
|
+
applied: boolean;
|
|
24
|
+
applied_at?: string;
|
|
25
|
+
execution_time_ms?: number;
|
|
26
|
+
dependencies_met: boolean;
|
|
27
|
+
missing_dependencies: string[];
|
|
28
|
+
}
|
|
29
|
+
export interface MigrationPlan {
|
|
30
|
+
toApply: Migration[];
|
|
31
|
+
toRollback: Migration[];
|
|
32
|
+
conflicts: string[];
|
|
33
|
+
estimatedTime: number;
|
|
34
|
+
}
|
|
35
|
+
export interface MigrationOptions {
|
|
36
|
+
dryRun?: boolean;
|
|
37
|
+
stopOnError?: boolean;
|
|
38
|
+
validateChecksums?: boolean;
|
|
39
|
+
timeout?: number;
|
|
40
|
+
onProgress?: (current: number, total: number, migration: Migration) => void;
|
|
41
|
+
onError?: (error: Error, migration: Migration) => void;
|
|
42
|
+
}
|
|
43
|
+
export declare class MigrationManager {
|
|
44
|
+
private dao;
|
|
45
|
+
private migrations;
|
|
46
|
+
private migrationTable;
|
|
47
|
+
private schemaVersion;
|
|
48
|
+
constructor(dao: UniversalDAO, options?: {
|
|
49
|
+
migrationTable?: string;
|
|
50
|
+
schemaVersion?: string;
|
|
51
|
+
});
|
|
52
|
+
/**
|
|
53
|
+
* Add a single migration
|
|
54
|
+
*/
|
|
55
|
+
addMigration(migration: Migration): void;
|
|
56
|
+
/**
|
|
57
|
+
* Add multiple migrations
|
|
58
|
+
*/
|
|
59
|
+
addMigrations(migrations: Migration[]): void;
|
|
60
|
+
/**
|
|
61
|
+
* Load migrations from a directory or configuration
|
|
62
|
+
*/
|
|
63
|
+
loadMigrations(migrations: Record<string, Migration>): void;
|
|
64
|
+
/**
|
|
65
|
+
* Remove a migration
|
|
66
|
+
*/
|
|
67
|
+
removeMigration(version: string): boolean;
|
|
68
|
+
/**
|
|
69
|
+
* Get all registered migrations
|
|
70
|
+
*/
|
|
71
|
+
getMigrations(): Migration[];
|
|
72
|
+
/**
|
|
73
|
+
* Get migration by version
|
|
74
|
+
*/
|
|
75
|
+
getMigration(version: string): Migration | undefined;
|
|
76
|
+
/**
|
|
77
|
+
* Initialize the migration tracking table
|
|
78
|
+
*/
|
|
79
|
+
initMigrationTable(): Promise<void>;
|
|
80
|
+
/**
|
|
81
|
+
* Get all applied migrations
|
|
82
|
+
*/
|
|
83
|
+
getAppliedMigrations(): Promise<MigrationRecord[]>;
|
|
84
|
+
/**
|
|
85
|
+
* Get pending migrations
|
|
86
|
+
*/
|
|
87
|
+
getPendingMigrations(): Promise<Migration[]>;
|
|
88
|
+
/**
|
|
89
|
+
* Get detailed status of all migrations
|
|
90
|
+
*/
|
|
91
|
+
getDetailedStatus(): Promise<MigrationStatus[]>;
|
|
92
|
+
/**
|
|
93
|
+
* Create a migration plan
|
|
94
|
+
*/
|
|
95
|
+
createMigrationPlan(targetVersion?: string, direction?: 'up' | 'down'): Promise<MigrationPlan>;
|
|
96
|
+
/**
|
|
97
|
+
* Run migrations up to a target version
|
|
98
|
+
*/
|
|
99
|
+
migrate(targetVersion?: string, options?: MigrationOptions): Promise<MigrationRecord[]>;
|
|
100
|
+
/**
|
|
101
|
+
* Rollback migrations to a target version
|
|
102
|
+
*/
|
|
103
|
+
rollback(targetVersion?: string, options?: MigrationOptions): Promise<void>;
|
|
104
|
+
/**
|
|
105
|
+
* Apply a single migration
|
|
106
|
+
*/
|
|
107
|
+
private applyMigration;
|
|
108
|
+
/**
|
|
109
|
+
* Rollback a single migration
|
|
110
|
+
*/
|
|
111
|
+
private rollbackMigration;
|
|
112
|
+
/**
|
|
113
|
+
* Reset all migrations (DANGEROUS - use with caution)
|
|
114
|
+
*/
|
|
115
|
+
reset(options?: {
|
|
116
|
+
force?: boolean;
|
|
117
|
+
}): Promise<void>;
|
|
118
|
+
/**
|
|
119
|
+
* Validate migration integrity
|
|
120
|
+
*/
|
|
121
|
+
validateIntegrity(): Promise<{
|
|
122
|
+
valid: boolean;
|
|
123
|
+
issues: string[];
|
|
124
|
+
}>;
|
|
125
|
+
/**
|
|
126
|
+
* Get migration history with statistics
|
|
127
|
+
*/
|
|
128
|
+
getHistory(): Promise<{
|
|
129
|
+
totalMigrations: number;
|
|
130
|
+
appliedMigrations: number;
|
|
131
|
+
pendingMigrations: number;
|
|
132
|
+
categories: Record<string, number>;
|
|
133
|
+
totalExecutionTime: number;
|
|
134
|
+
averageExecutionTime: number;
|
|
135
|
+
recentMigrations: MigrationRecord[];
|
|
136
|
+
}>;
|
|
137
|
+
/**
|
|
138
|
+
* Create a migration from schema differences
|
|
139
|
+
*/
|
|
140
|
+
static createMigrationFromSchema(fromSchema: DatabaseSchema, toSchema: DatabaseSchema, version: string, description?: string): Migration;
|
|
141
|
+
private validateMigration;
|
|
142
|
+
private checkDependencies;
|
|
143
|
+
private compareVersions;
|
|
144
|
+
private generateChecksum;
|
|
145
|
+
}
|
|
146
|
+
export declare const MigrationHelpers: {
|
|
147
|
+
/**
|
|
148
|
+
* Create a migration to add a new table
|
|
149
|
+
*/
|
|
150
|
+
createTable(version: string, tableName: string, columns: ColumnDefinition[], options?: {
|
|
151
|
+
description?: string;
|
|
152
|
+
category?: string;
|
|
153
|
+
indexes?: Array<{
|
|
154
|
+
name: string;
|
|
155
|
+
columns: string[];
|
|
156
|
+
unique?: boolean;
|
|
157
|
+
}>;
|
|
158
|
+
}): Migration;
|
|
159
|
+
/**
|
|
160
|
+
* Create a migration to add a column
|
|
161
|
+
*/
|
|
162
|
+
addColumn(version: string, tableName: string, columnName: string, columnType: string, options?: {
|
|
163
|
+
description?: string;
|
|
164
|
+
category?: string;
|
|
165
|
+
defaultValue?: any;
|
|
166
|
+
nullable?: boolean;
|
|
167
|
+
}): Migration;
|
|
168
|
+
/**
|
|
169
|
+
* Create a migration to add an index
|
|
170
|
+
*/
|
|
171
|
+
addIndex(version: string, tableName: string, indexName: string, columns: string[], options?: {
|
|
172
|
+
description?: string;
|
|
173
|
+
category?: string;
|
|
174
|
+
unique?: boolean;
|
|
175
|
+
}): Migration;
|
|
176
|
+
/**
|
|
177
|
+
* Create a migration to run custom SQL
|
|
178
|
+
*/
|
|
179
|
+
rawSQL(version: string, upSQL: string, downSQL: string, options?: {
|
|
180
|
+
description?: string;
|
|
181
|
+
category?: string;
|
|
182
|
+
}): Migration;
|
|
183
|
+
};
|
|
184
|
+
//# sourceMappingURL=migration-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration-manager.d.ts","sourceRoot":"","sources":["../../src/utils/migration-manager.ts"],"names":[],"mappings":"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"}
|