@@ -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