This commit is contained in:
@@ -0,0 +1 @@
|
||||
dist
|
||||
@@ -0,0 +1,16 @@
|
||||
/**
|
||||
* Базовый интерфейс для всех документов в базе данных.
|
||||
* Содержит общие поля, такие как идентификатор, тип и дату создания.
|
||||
*/
|
||||
export interface BaseDocument {
|
||||
/** Уникальный идентификатор документа */
|
||||
_id: string
|
||||
|
||||
_rev?: string
|
||||
|
||||
/** Тип документа */
|
||||
type: string
|
||||
|
||||
/** Дата создания документа в формате ISO */
|
||||
created_at: string
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
import { type BaseDocument } from './BaseDocument'
|
||||
|
||||
/**
|
||||
* Интерфейс для документа сообщения.
|
||||
* Используется для хранения сообщений, отправленных через QR‑код, с поддержкой вложений.
|
||||
*/
|
||||
export interface MessageDocument extends BaseDocument {
|
||||
/** Тип документа, всегда 'message' */
|
||||
type: 'message'
|
||||
|
||||
/** Идентификатор QR‑кода, к которому относится сообщение */
|
||||
qr_code_uri: string
|
||||
|
||||
/** Идентификатор чата для связывания сообщений */
|
||||
chat: string
|
||||
|
||||
/** Отправитель сообщения ('guest' или 'owner') */
|
||||
from: 'guest' | 'owner'
|
||||
|
||||
/** Содержимое сообщения */
|
||||
body: string
|
||||
|
||||
/** Опциональная геопозиция (широта и долгота) */
|
||||
location?: { lat: number; lng: number }
|
||||
|
||||
/** Идентификатор пользователя, отправившего сообщение */
|
||||
user_uuid: string
|
||||
|
||||
/** Идентификатор браузера, отправившего сообщение */
|
||||
browser_uuid: string
|
||||
|
||||
/** Вложения, такие как фото */
|
||||
// _attachments?: {
|
||||
// [key: string]: Attachment
|
||||
// }
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
import type { BaseDocument } from "./BaseDocument";
|
||||
|
||||
export interface PublicSettingsDocument extends BaseDocument {
|
||||
_id: string; // Формат: "public_settings:<name>"
|
||||
type: "public_settings";
|
||||
|
||||
/**
|
||||
* Название настройки
|
||||
*/
|
||||
name: string;
|
||||
|
||||
/**
|
||||
* Значение настройки
|
||||
*/
|
||||
value: string;
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
import type { BaseDocument } from './BaseDocument'
|
||||
|
||||
export type ContactInfo = {
|
||||
name?: string
|
||||
phone?: string
|
||||
email?: string
|
||||
}
|
||||
|
||||
/**
|
||||
* Интерфейс для документа QR‑кода.
|
||||
* Представляет QR‑код, созданный пользователем, и информацию о привязанном объекте.
|
||||
*/
|
||||
export interface QRCodeDocument extends BaseDocument {
|
||||
/** Тип документа, всегда 'qr_code' */
|
||||
type: 'qr_code'
|
||||
|
||||
/** Уникальный URL для настройки и взаимодействия */
|
||||
uri: string
|
||||
|
||||
/** Ссылка на QR‑код */
|
||||
url: string
|
||||
|
||||
/** Идентификатор пользователя, который создал QR‑код */
|
||||
user_uuid: string
|
||||
|
||||
/** Идентификатор браузера, через который был создан QR-код */
|
||||
browser_uuid: string
|
||||
|
||||
/** Название объекта, для которого создан QR‑код, например "Мой автомобиль" */
|
||||
name: string
|
||||
|
||||
messageDeliveryMethod: 'telegram' | 'webPush'
|
||||
|
||||
/** Тип объекта, для которого создан QR‑код, например "car" */
|
||||
placement: 'car' | 'pet' | 'door' | 'store' | 'restaurant_table' | 'other'
|
||||
|
||||
/** Доступные действия для гостей (например, ["send_message"]) */
|
||||
actions: string[]
|
||||
|
||||
/** Предустановленное сообщение для гостей */
|
||||
predefinedMessages?: string[]
|
||||
|
||||
contactInfo?: ContactInfo
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
import type { BaseDocument } from "./BaseDocument";
|
||||
|
||||
type MessageDeliveryMethodWebPushVapid = {
|
||||
name: "message_delivery_method_web_push_vapid";
|
||||
value: {
|
||||
subject: string;
|
||||
keys: {
|
||||
publicKey: string;
|
||||
privateKey: string;
|
||||
};
|
||||
};
|
||||
};
|
||||
type MessageDeliveryMethodWebPushGcmApiKey = {
|
||||
name: "message_delivery_method_web_push_gcm_api_key";
|
||||
value: string;
|
||||
};
|
||||
|
||||
export type ServerSettingsDocument = (
|
||||
| MessageDeliveryMethodWebPushVapid
|
||||
| MessageDeliveryMethodWebPushGcmApiKey
|
||||
) & {
|
||||
_id: string; // Формат: "server_settings:<name>"
|
||||
type: "server_settings";
|
||||
} & BaseDocument;
|
||||
@@ -0,0 +1,25 @@
|
||||
import type { BaseDocument } from './BaseDocument'
|
||||
|
||||
/**
|
||||
* Интерфейс для документа пользователя.
|
||||
* Содержит данные, такие как имя пользователя, уникальный UUID, email и роли.
|
||||
*/
|
||||
export interface UserDocument extends BaseDocument {
|
||||
/** Тип документа, всегда 'user' */
|
||||
type: 'user'
|
||||
|
||||
/** Имя пользователя */
|
||||
name: string
|
||||
|
||||
/** Уникальный UUID пользователя, не связанный с _id */
|
||||
user_uuid: string
|
||||
|
||||
/** Email пользователя */
|
||||
email: string
|
||||
|
||||
/** Роли пользователя (например, ['admin', 'user']) */
|
||||
roles: string[]
|
||||
|
||||
/** Пароль пользователя (должен храниться в зашифрованном виде) */
|
||||
password: string
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
import type { BaseDocument } from "./BaseDocument";
|
||||
|
||||
export interface WebPushSubscriptionDocument extends BaseDocument {
|
||||
_id: string; // Формат: "web_push_subscription:<user_uuid>:<browser_uuid>"
|
||||
type: "web_push_subscription";
|
||||
user_uuid: string; // UUID пользователя, связанного с подпиской
|
||||
browser_uuid: string; // UUID браузера, связанного с подпиской
|
||||
subscription: PushSubscriptionJSON;
|
||||
created_at: string; // Дата создания подписки в ISO формате
|
||||
updated_at?: string; // Дата последнего обновления подписки
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
export * from "./BaseDocument";
|
||||
export * from "./MessageDocument";
|
||||
export * from "./PublicSettingsDocument";
|
||||
export * from "./QRCodeDocument";
|
||||
export * from "./ServerSettingsDocument";
|
||||
export * from "./UserDocument";
|
||||
export * from "./WebPushSubscriptionDocument";
|
||||
@@ -0,0 +1 @@
|
||||
export * from "./DBDocuments";
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"name": "@hereconnect/types",
|
||||
"version": "1.0.0",
|
||||
"main": "index.ts",
|
||||
"types": "index.ts",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"build": "tsc"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"declaration": true,
|
||||
"emitDeclarationOnly": true,
|
||||
"outDir": "./dist",
|
||||
"strict": true
|
||||
},
|
||||
"include": ["index.ts"]
|
||||
}
|
||||
Reference in New Issue
Block a user