2022-06-19 02:25:21 +02:00
|
|
|
import type {Database} from "sqlite3";
|
|
|
|
|
|
|
|
import {Channel} from "../../models/channel";
|
|
|
|
import {Message} from "../../models/message";
|
|
|
|
import {Network} from "../../models/network";
|
|
|
|
import Client from "../../client";
|
|
|
|
|
|
|
|
interface MessageStorage {
|
|
|
|
client: Client;
|
|
|
|
isEnabled: boolean;
|
|
|
|
|
2022-11-01 22:51:40 +01:00
|
|
|
enable(): Promise<void>;
|
2022-06-19 02:25:21 +02:00
|
|
|
|
2022-11-01 22:51:40 +01:00
|
|
|
close(): Promise<void>;
|
2022-06-19 02:25:21 +02:00
|
|
|
|
2022-11-01 22:51:40 +01:00
|
|
|
index(network: Network, channel: Channel, msg: Message): Promise<void>;
|
2022-06-19 02:25:21 +02:00
|
|
|
|
2022-11-01 22:51:40 +01:00
|
|
|
deleteChannel(network: Network, channel: Channel): Promise<void>;
|
2022-06-19 02:25:21 +02:00
|
|
|
|
|
|
|
getMessages(network: Network, channel: Channel): Promise<Message[]>;
|
|
|
|
|
|
|
|
canProvideMessages(): boolean;
|
|
|
|
}
|
|
|
|
|
|
|
|
export type SearchQuery = {
|
|
|
|
searchTerm: string;
|
|
|
|
networkUuid: string;
|
|
|
|
channelName: string;
|
2022-11-12 22:50:56 +01:00
|
|
|
offset: number;
|
2022-06-19 02:25:21 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
export type SearchResponse =
|
2022-11-01 22:51:40 +01:00
|
|
|
| Omit<SearchQuery, "channelName" | "offset"> & {
|
2022-06-19 02:25:21 +02:00
|
|
|
results: Message[];
|
|
|
|
target: string;
|
|
|
|
offset: number;
|
2022-11-01 22:51:40 +01:00
|
|
|
};
|
2022-06-19 02:25:21 +02:00
|
|
|
|
|
|
|
type SearchFunction = (query: SearchQuery) => Promise<SearchResponse>;
|
|
|
|
|
|
|
|
export interface SqliteMessageStorage extends MessageStorage {
|
|
|
|
database: Database;
|
|
|
|
search: SearchFunction | [];
|
|
|
|
}
|