import { GET_BY_ID, CREATE, UPDATE } from '../../sql/posterminal.js'; import resolveCompanyAccess from '../companyuser/resolveCompanyAccess.js'; export default function upsert(pool) { const access = resolveCompanyAccess(pool); return async (googleAuthId, companyId, input = {}) => { const pairingpin = input.pairingpin?.trim(); if (!pairingpin) { throw new Error('Invalid posterminal'); } const token = input.token ?? null; const id = input.id ?? null; await access(googleAuthId, companyId); if (id) { const existing = await pool .request() .input('id', id) .query(GET_BY_ID); if (!existing.recordset[0] || existing.recordset[0].companyId !== companyId) { throw new Error('Posterminal not found'); } await pool .request() .input('id', id) .input('companyId', companyId) .input('token', token) .input('pairingpin', pairingpin) .query(UPDATE); return { id, token, pairingpin }; } const created = await pool .request() .input('companyId', companyId) .input('token', token) .input('pairingpin', pairingpin) .query(CREATE); return { id: created.recordset[0].id, token: created.recordset[0].token, pairingpin: created.recordset[0].pairingpin, }; }; }