diff --git a/src/api/dbs.ts b/src/api/dbs.ts new file mode 100644 index 0000000..86253cf --- /dev/null +++ b/src/api/dbs.ts @@ -0,0 +1,8 @@ +import PouchDB from 'pouchdb-browser' +import { type QRCodeDocument } from '@/types/DBDocumentTypes' + +export const qrCodeDbRemote = new PouchDB('https://hereconnect.condev.ru/api/qr', { + skip_setup: true, +}) + +export const qrCodeDbLocal = new PouchDB('qr') diff --git a/src/api/qrCode.ts b/src/api/qrCode.ts new file mode 100644 index 0000000..8b53a8d --- /dev/null +++ b/src/api/qrCode.ts @@ -0,0 +1,47 @@ +import type { QRCodeDocument } from '@/types/DBDocumentTypes' +import { qrCodeDbLocal, qrCodeDbRemote } from '@/api/dbs' + +const EPOHE = 1731661630981 + +export const createQrCodeDocument = async ( + qrCodeDocPartial: Pick< + QRCodeDocument, + 'name' | 'deliveryMethod' | 'placement' | 'actions' | 'user_uuid' | 'predefinedMessage' + >, +) => { + const uri = Math.abs(Date.now() - EPOHE).toString(36) + + const qrCodeDoc: QRCodeDocument = { + _id: `qr_code:${uri}`, + type: 'qr_code', + uri, + url: `https://hereconnect.condev.ru/read/${uri}`, + created_at: new Date().toISOString(), + ...qrCodeDocPartial, + } + + const { rev } = await qrCodeDbLocal.put(qrCodeDoc) + qrCodeDoc._rev = rev + + const replicateResult = await qrCodeDbRemote.replicate.from(qrCodeDbLocal, { + doc_ids: [qrCodeDoc._id], + }) + + // Проверяем результат репликации + if (!replicateResult.ok) { + throw new Error('Ошибка репликации: операция завершилась с ошибкой.') + } + if (replicateResult.doc_write_failures > 0) { + throw new Error(`Ошибка записи документов: ${replicateResult.doc_write_failures}`) + } + if (replicateResult.errors.length > 0) { + throw new Error( + `Ошибки репликации: ${replicateResult.errors.map((e: { message: string }) => e.message).join(', ')}`, + ) + } + + return qrCodeDoc +} + +export const getQrCodeDocument = (uri: string) => + qrCodeDbLocal.get(`qr_code:${uri}`) diff --git a/src/components/create/CreateReadySection.vue b/src/components/create/CreateReadySection.vue deleted file mode 100644 index f9d8605..0000000 --- a/src/components/create/CreateReadySection.vue +++ /dev/null @@ -1,118 +0,0 @@ - - - diff --git a/src/components/create/CreateSummarySection.vue b/src/components/create/CreateSummarySection.vue index 148aef6..dbb0e67 100644 --- a/src/components/create/CreateSummarySection.vue +++ b/src/components/create/CreateSummarySection.vue @@ -5,14 +5,14 @@
- -

Название обязательно.

+ +

Название обязательно.