From fe4317982f5ae913d8afdd5f616618225afe3d3c Mon Sep 17 00:00:00 2001 From: Vasilii Mikhailovskii Date: Mon, 18 Nov 2024 23:28:33 +0200 Subject: [PATCH] =?UTF-8?q?=D0=BE=D1=82=D0=B4=D0=B5=D0=BB=D1=8C=D0=BD?= =?UTF-8?q?=D0=BE=D0=B9=20=D1=81=D1=82=D1=80=D0=B0=D0=BD=D0=B8=D1=86=D0=B5?= =?UTF-8?q?=D0=B9=20=D0=B2=D1=8B=D0=B2=D0=B5=D0=BB=20=D0=B3=D0=BE=D1=82?= =?UTF-8?q?=D0=BE=D0=B2=D1=8B=D0=B9=20qr-=D0=BA=D0=BE=D0=B4=20/manage/:qr?= =?UTF-8?q?=5Fcode=5Furi/view?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/dbs.ts | 8 ++ src/api/qrCode.ts | 47 ++++++ src/components/create/CreateReadySection.vue | 118 --------------- .../create/CreateSummarySection.vue | 37 ++--- src/dbs.ts | 6 - src/layouts/CreateLayout.vue | 51 ------- src/router/index.ts | 21 ++- src/types/DBDocumentTypes/BaseDocument.ts | 2 + src/views/CreateActionsView.vue | 4 - src/views/CreateView.vue | 106 +++++++------- src/views/ManageQRCodeReadyView.vue | 136 ++++++++++++++++++ 11 files changed, 264 insertions(+), 272 deletions(-) create mode 100644 src/api/dbs.ts create mode 100644 src/api/qrCode.ts delete mode 100644 src/components/create/CreateReadySection.vue delete mode 100644 src/dbs.ts delete mode 100644 src/layouts/CreateLayout.vue delete mode 100644 src/views/CreateActionsView.vue create mode 100644 src/views/ManageQRCodeReadyView.vue 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 @@
- -

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

+ +

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