55 lines
1.7 KiB
JavaScript
55 lines
1.7 KiB
JavaScript
const { collection, doc, getDoc, setDoc, deleteDoc } = require('firebase/firestore');
|
|
const { getFirestoreInstance: getFirestore } = require('../../services/firebaseClient');
|
|
const { createEncryptedConverter } = require('../firestoreConverter');
|
|
|
|
// Create encrypted converter for user model selections
|
|
const userModelSelectionsConverter = createEncryptedConverter([
|
|
'selected_llm_provider',
|
|
'selected_llm_model',
|
|
'selected_stt_provider',
|
|
'selected_stt_model'
|
|
]);
|
|
|
|
function userModelSelectionsCol() {
|
|
const db = getFirestore();
|
|
return collection(db, 'user_model_selections').withConverter(userModelSelectionsConverter);
|
|
}
|
|
|
|
async function get(uid) {
|
|
try {
|
|
const docRef = doc(userModelSelectionsCol(), uid);
|
|
const docSnap = await getDoc(docRef);
|
|
return docSnap.exists() ? { id: docSnap.id, ...docSnap.data() } : null;
|
|
} catch (error) {
|
|
console.error('[UserModelSelections Firebase] Error getting user model selections:', error);
|
|
return null;
|
|
}
|
|
}
|
|
|
|
async function upsert(uid, selections) {
|
|
try {
|
|
const docRef = doc(userModelSelectionsCol(), uid);
|
|
await setDoc(docRef, selections, { merge: true });
|
|
return { changes: 1 };
|
|
} catch (error) {
|
|
console.error('[UserModelSelections Firebase] Error upserting user model selections:', error);
|
|
throw error;
|
|
}
|
|
}
|
|
|
|
async function remove(uid) {
|
|
try {
|
|
const docRef = doc(userModelSelectionsCol(), uid);
|
|
await deleteDoc(docRef);
|
|
return { changes: 1 };
|
|
} catch (error) {
|
|
console.error('[UserModelSelections Firebase] Error removing user model selections:', error);
|
|
throw error;
|
|
}
|
|
}
|
|
|
|
module.exports = {
|
|
get,
|
|
upsert,
|
|
remove
|
|
};
|