lobe-chat

Форк
0
37 строк · 898.0 Байт
1
import { DBModel } from '@/database/client/core/types/db';
2
import { DB_File, DB_FileSchema } from '@/database/client/schemas/files';
3
import { nanoid } from '@/utils/uuid';
4

5
import { BaseModel } from '../core';
6

7
class _FileModel extends BaseModel<'files'> {
8
  constructor() {
9
    super('files', DB_FileSchema);
10
  }
11

12
  async create(file: DB_File) {
13
    const id = nanoid();
14

15
    return this._addWithSync(file, `file-${id}`);
16
  }
17

18
  async findById(id: string): Promise<DBModel<DB_File> | undefined> {
19
    const item = await this.table.get(id);
20
    if (!item) return;
21

22
    // arrayBuffer to url
23
    const base64 = Buffer.from(item.data!).toString('base64');
24

25
    return { ...item, url: `data:${item.fileType};base64,${base64}` };
26
  }
27

28
  async delete(id: string) {
29
    return this.table.delete(id);
30
  }
31

32
  async clear() {
33
    return this.table.clear();
34
  }
35
}
36

37
export const FileModel = new _FileModel();
38

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.