- aggiornamenti guida RIS, FAQ
- Editor HTML aggiunto CSS e Script - Statistiche - CRISBalanceBar - Inizio Sync... (ma disattivato)
This commit is contained in:
68
src/services/idb.js
Normal file
68
src/services/idb.js
Normal file
@@ -0,0 +1,68 @@
|
||||
// src/services/idb.js (nuovo, usa storage.js esistente)
|
||||
import { idbKeyval } from '@/storage';
|
||||
|
||||
class SyncIDB {
|
||||
constructor() {
|
||||
this.tables = ['resps', 'workers', 'groups', 'mygroups', 'products', 'cart', 'orderscart'];
|
||||
}
|
||||
|
||||
// Sostituisci intera tabella
|
||||
async replaceTable(tableName, records) {
|
||||
await idbKeyval.clearalldata(tableName);
|
||||
|
||||
for (const record of records) {
|
||||
await idbKeyval.setdata(tableName, record);
|
||||
}
|
||||
}
|
||||
|
||||
// Merge records modificati
|
||||
async mergeRecords(tableName, records) {
|
||||
for (const record of records) {
|
||||
if (record.deleted === true) {
|
||||
// Trova BOMID e cancella
|
||||
const existing = await this.findByMongoId(tableName, record._id);
|
||||
if (existing) {
|
||||
await idbKeyval.deletedata(tableName, existing.BOMID);
|
||||
}
|
||||
} else {
|
||||
// Controlla se esiste già
|
||||
const existing = await this.findByMongoId(tableName, record._id);
|
||||
|
||||
if (existing) {
|
||||
// Aggiorna (mantieni BOMID)
|
||||
record.BOMID = existing.BOMID;
|
||||
await idbKeyval.setdata(tableName, record);
|
||||
} else {
|
||||
// Inserisci nuovo
|
||||
await idbKeyval.setdata(tableName, record);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Trova record per _id MongoDB
|
||||
async findByMongoId(tableName, mongoId) {
|
||||
const allRecords = await idbKeyval.getalldata(tableName);
|
||||
return allRecords.find(r => r._id === mongoId);
|
||||
}
|
||||
|
||||
// Ottieni tutti i record
|
||||
async getTable(tableName) {
|
||||
return await idbKeyval.getalldata(tableName);
|
||||
}
|
||||
|
||||
// Timestamp ultima sync
|
||||
async getLastSync(tableName) {
|
||||
const meta = await idbKeyval.getdata('metadata', `${tableName}_lastSync`);
|
||||
return meta?.value || 0;
|
||||
}
|
||||
|
||||
async setLastSync(tableName, timestamp) {
|
||||
await idbKeyval.setdata('metadata', {
|
||||
BOMID: `${tableName}_lastSync`,
|
||||
value: timestamp
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export default new SyncIDB();
|
||||
Reference in New Issue
Block a user