отдельной страницей вывел готовый qr-код /manage/:qr_code_uri/view
Main daploy / deploy (push) Successful in 38s
Main daploy / deploy (push) Successful in 38s
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
import PouchDB from 'pouchdb-browser'
|
||||
import { type QRCodeDocument } from '@/types/DBDocumentTypes'
|
||||
|
||||
export const qrCodeDbRemote = new PouchDB<QRCodeDocument>('https://hereconnect.condev.ru/api/qr', {
|
||||
skip_setup: true,
|
||||
})
|
||||
|
||||
export const qrCodeDbLocal = new PouchDB<QRCodeDocument>('qr')
|
||||
@@ -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<QRCodeDocument>(`qr_code:${uri}`)
|
||||
Reference in New Issue
Block a user