Skip to content

Commit 5c234fe

Browse files
committed
[refactor,example]: update entity parameter names to use entityClass for consistency;
1 parent 5287544 commit 5c234fe

1 file changed

Lines changed: 33 additions & 34 deletions

File tree

examples/vite+react/src/hook/useIDBOperations.ts

Lines changed: 33 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,7 @@ const useIDBOperations = () => {
1111
setLoading(true);
1212
setError(null);
1313
try {
14-
const database = new Database(dbName, classes);
15-
await database.initialize();
14+
const database = await Database.build(dbName, classes);
1615
setDb(database);
1716
} catch (err) {
1817
setError('Failed to initialize database');
@@ -23,111 +22,111 @@ const useIDBOperations = () => {
2322
};
2423

2524
// Create a new item using repository pattern
26-
const createItem = async <T>(entityName: string, item: T) => {
25+
const createItem = async <T>(entityClass: Function, item: T) => {
2726
if (!db) {
2827
setError('Database not initialized');
2928
return;
3029
}
3130
setLoading(true);
3231
setError(null);
3332
try {
34-
const repository = (db as any)[entityName];
33+
const repository = (db as any)[entityClass.name];
3534
if (!repository) {
36-
throw new Error(`Repository for ${entityName} not found`);
35+
throw new Error(`Repository for ${entityClass.name} not found`);
3736
}
3837
await repository.create(item);
3938
} catch (err) {
40-
setError(`Failed to create ${entityName}`);
39+
setError(`Failed to create ${entityClass.name}`);
4140
console.error(err);
4241
} finally {
4342
setLoading(false);
4443
}
4544
};
4645

4746
// Read an item by key using repository pattern
48-
const readItem = async <T>(entityName: string, key: any): Promise<T | undefined> => {
47+
const readItem = async <T>(entityClass: Function, key: any): Promise<T | undefined> => {
4948
if (!db) {
5049
setError('Database not initialized');
5150
return;
5251
}
5352
setLoading(true);
5453
setError(null);
5554
try {
56-
const repository = (db as any)[entityName];
55+
const repository = (db as any)[entityClass.name];
5756
if (!repository) {
58-
throw new Error(`Repository for ${entityName} not found`);
57+
throw new Error(`Repository for ${entityClass.name} not found`);
5958
}
6059
const item = await repository.read(key);
6160
return item;
6261
} catch (err) {
63-
setError(`Failed to read ${entityName}`);
62+
setError(`Failed to read ${entityClass.name}`);
6463
console.error(err);
6564
} finally {
6665
setLoading(false);
6766
}
6867
};
6968

7069
// Update an item using repository pattern
71-
const updateItem = async <T>(entityName: string, item: T) => {
70+
const updateItem = async <T>(entityClass: Function, item: T) => {
7271
if (!db) {
7372
setError('Database not initialized');
7473
return;
7574
}
7675
setLoading(true);
7776
setError(null);
7877
try {
79-
const repository = (db as any)[entityName];
78+
const repository = (db as any)[entityClass.name];
8079
if (!repository) {
81-
throw new Error(`Repository for ${entityName} not found`);
80+
throw new Error(`Repository for ${entityClass.name} not found`);
8281
}
8382
await repository.update(item);
8483
} catch (err) {
85-
setError(`Failed to update ${entityName}`);
84+
setError(`Failed to update ${entityClass.name}`);
8685
console.error(err);
8786
} finally {
8887
setLoading(false);
8988
}
9089
};
9190

9291
// Delete an item by key using repository pattern
93-
const deleteItem = async (entityName: string, key: any) => {
92+
const deleteItem = async (entityClass: Function, key: any) => {
9493
if (!db) {
9594
setError('Database not initialized');
9695
return;
9796
}
9897
setLoading(true);
9998
setError(null);
10099
try {
101-
const repository = (db as any)[entityName];
100+
const repository = (db as any)[entityClass.name];
102101
if (!repository) {
103-
throw new Error(`Repository for ${entityName} not found`);
102+
throw new Error(`Repository for ${entityClass.name} not found`);
104103
}
105104
await repository.delete(key);
106105
} catch (err) {
107-
setError(`Failed to delete ${entityName}`);
106+
setError(`Failed to delete ${entityClass.name}`);
108107
console.error(err);
109108
} finally {
110109
setLoading(false);
111110
}
112111
};
113112

114113
// List all items using repository pattern
115-
const listItems = async <T>(entityName: string): Promise<T[]> => {
114+
const listItems = async <T>(entityClass: Function): Promise<T[]> => {
116115
if (!db) {
117116
setError('Database not initialized');
118117
return [];
119118
}
120119
setLoading(true);
121120
setError(null);
122121
try {
123-
const repository = (db as any)[entityName];
122+
const repository = (db as any)[entityClass.name];
124123
if (!repository) {
125-
throw new Error(`Repository for ${entityName} not found`);
124+
throw new Error(`Repository for ${entityClass.name} not found`);
126125
}
127126
const items = await repository.list();
128127
return items;
129128
} catch (err) {
130-
setError(`Failed to list ${entityName}`);
129+
setError(`Failed to list ${entityClass.name}`);
131130
console.error(err);
132131
return [];
133132
} finally {
@@ -136,23 +135,23 @@ const useIDBOperations = () => {
136135
};
137136

138137
// Advanced query operations
139-
const queryItems = async <T>(entityName: string, queryFn: (query: any) => any): Promise<T[]> => {
138+
const queryItems = async <T>(entityClass: Function, queryFn: (query: any) => any): Promise<T[]> => {
140139
if (!db) {
141140
setError('Database not initialized');
142141
return [];
143142
}
144143
setLoading(true);
145144
setError(null);
146145
try {
147-
const repository = (db as any)[entityName];
146+
const repository = (db as any)[entityClass.name];
148147
if (!repository) {
149-
throw new Error(`Repository for ${entityName} not found`);
148+
throw new Error(`Repository for ${entityClass.name} not found`);
150149
}
151150
const query = repository.query();
152151
const results = await queryFn(query).execute();
153152
return results;
154153
} catch (err) {
155-
setError(`Failed to query ${entityName}`);
154+
setError(`Failed to query ${entityClass.name}`);
156155
console.error(err);
157156
return [];
158157
} finally {
@@ -161,45 +160,45 @@ const useIDBOperations = () => {
161160
};
162161

163162
// Find by index
164-
const findByIndex = async <T>(entityName: string, indexName: string, value: any): Promise<T | undefined> => {
163+
const findByIndex = async <T>(entityClass: Function, indexName: string, value: any): Promise<T | undefined> => {
165164
if (!db) {
166165
setError('Database not initialized');
167166
return;
168167
}
169168
setLoading(true);
170169
setError(null);
171170
try {
172-
const repository = (db as any)[entityName];
171+
const repository = (db as any)[entityClass.name];
173172
if (!repository) {
174-
throw new Error(`Repository for ${entityName} not found`);
173+
throw new Error(`Repository for ${entityClass.name} not found`);
175174
}
176175
const item = await repository.findOneByIndex(indexName, value);
177176
return item;
178177
} catch (err) {
179-
setError(`Failed to find by index in ${entityName}`);
178+
setError(`Failed to find by index in ${entityClass.name}`);
180179
console.error(err);
181180
} finally {
182181
setLoading(false);
183182
}
184183
};
185184

186185
// Find all by index
187-
const findAllByIndex = async <T>(entityName: string, indexName: string, value: any): Promise<T[]> => {
186+
const findAllByIndex = async <T>(entityClass: Function, indexName: string, value: any): Promise<T[]> => {
188187
if (!db) {
189188
setError('Database not initialized');
190189
return [];
191190
}
192191
setLoading(true);
193192
setError(null);
194193
try {
195-
const repository = (db as any)[entityName];
194+
const repository = (db as any)[entityClass.name];
196195
if (!repository) {
197-
throw new Error(`Repository for ${entityName} not found`);
196+
throw new Error(`Repository for ${entityClass.name} not found`);
198197
}
199198
const items = await repository.findByIndex(indexName, value);
200199
return items;
201200
} catch (err) {
202-
setError(`Failed to find all by index in ${entityName}`);
201+
setError(`Failed to find all by index in ${entityClass.name}`);
203202
console.error(err);
204203
return [];
205204
} finally {

0 commit comments

Comments
 (0)