2024-08-07 19:30:20 +01:00
|
|
|
|
|
|
|
|
import { Dexie, EntityTable, liveQuery } from 'Dexie';
|
|
|
|
|
import { DexieMessageTable, messageTableColumn, MessageTable } from './schema/message';
|
|
|
|
|
import { DexieMembersTableSchema, MemberTableColumn } from './schema/members';
|
|
|
|
|
import { DexieRoomsTableSchema, RoomTableColumn } from './schema/room';
|
|
|
|
|
import { DexieTypingsTableSchema, TypingTableColumn } from './schema/typing';
|
2024-08-07 20:23:33 +01:00
|
|
|
import { MessageEntity } from '../../../domain/entity/message';
|
2024-08-07 19:30:20 +01:00
|
|
|
|
|
|
|
|
// Database declaration (move this to its own module also)
|
2024-08-07 20:23:33 +01:00
|
|
|
export const chatDatabase = new Dexie('chat-database-infra') as Dexie & {
|
2024-08-07 19:30:20 +01:00
|
|
|
message: DexieMessageTable,
|
|
|
|
|
members: DexieMembersTableSchema,
|
|
|
|
|
room: DexieRoomsTableSchema,
|
|
|
|
|
typing: DexieTypingsTableSchema
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
chatDatabase.version(1).stores({
|
|
|
|
|
message: messageTableColumn,
|
|
|
|
|
members: MemberTableColumn,
|
|
|
|
|
room: RoomTableColumn,
|
|
|
|
|
typing: TypingTableColumn
|
|
|
|
|
});
|
2024-08-07 20:23:33 +01:00
|
|
|
|
|
|
|
|
chatDatabase.message.mapToClass(MessageEntity)
|