This commit is contained in:
Peter Maquiran
2024-08-13 10:52:35 +01:00
parent 5b31a186c2
commit 251f533a68
53 changed files with 985 additions and 453 deletions
@@ -1,13 +1,13 @@
import { Injectable } from '@angular/core';
import { Dexie, EntityTable, liveQuery } from 'Dexie';
import { liveQuery } from 'Dexie';
import { err, ok, Result } from 'neverthrow';
import { from, Observable, Subject } from 'rxjs';
import { Observable, Subject } from 'rxjs';
import { filter } from 'rxjs/operators';
import { MessageInputDTO } from '../../dto/message/messageInputDtO';
import { MessageEntity } from '../../../domain/entity/message';
import { DexieRepository } from 'src/app/infra/repository/dexie/dexie-repository.service';
import { MessageTable } from 'src/app/module/chat/infra/database/dexie/schema/message';
import { chatDatabase } from '../../../infra/database/dexie/service';
import { Observable as DexieObservable, PromiseExtended } from 'Dexie';
@Injectable({
providedIn: 'root'
@@ -61,7 +61,7 @@ export class MessageLocalDataSourceService extends DexieRepository<MessageTable>
}
async sendMessage(data: MessageInputDTO) {
async sendMessage(data: MessageTable) {
(data as MessageTable).sending = true
@@ -76,9 +76,8 @@ export class MessageLocalDataSourceService extends DexieRepository<MessageTable>
}
// @ValidateSchema(tableSchema)
async createMessage(data: MessageInputDTO) {
async createMessage(data: MessageTable) {
try {
const result = await chatDatabase.message.add(data)
@@ -90,7 +89,7 @@ export class MessageLocalDataSourceService extends DexieRepository<MessageTable>
}
async createManyMessage(data: MessageInputDTO[]) {
async createManyMessage(data: MessageTable[]) {
try {
const result = await chatDatabase.message.bulkAdd(data)
@@ -147,12 +146,12 @@ export class MessageLocalDataSourceService extends DexieRepository<MessageTable>
}
}
getItems(roomId: string) {
return chatDatabase.message.where('roomId').equals(roomId).toArray()
getItems(roomId: string): PromiseExtended<MessageEntity[]> {
return chatDatabase.message.where('roomId').equals(roomId).sortBy('$id') as any
}
getItemsLive(roomId: string) {
return liveQuery(() => chatDatabase.message.where('roomId').equals(roomId).sortBy('$id'))
getItemsLive(roomId: string): DexieObservable<MessageEntity[]> {
return liveQuery(() => chatDatabase.message.where('roomId').equals(roomId).sortBy('$id') as any)
}