2026-04-28 17:46:34 +02:00
|
|
|
import { chatsChatid, type ChatsChatid } from './Chats';
|
|
|
|
|
import { usersId, type UsersId } from './Users';
|
2025-10-21 18:42:03 +02:00
|
|
|
import type { ColumnType, Selectable, Insertable, Updateable } from 'kysely';
|
2026-04-28 17:46:34 +02:00
|
|
|
import { z } from 'zod';
|
2025-08-04 17:45:44 +02:00
|
|
|
|
|
|
|
|
/** Identifier type for public.messages */
|
2025-10-21 18:42:03 +02:00
|
|
|
export type MessagesMessageid = string & { __brand: 'public.messages' };
|
2025-08-04 17:45:44 +02:00
|
|
|
|
|
|
|
|
/** Represents the table public.messages */
|
|
|
|
|
export default interface MessagesTable {
|
2025-10-21 18:42:03 +02:00
|
|
|
messageid: ColumnType<MessagesMessageid, MessagesMessageid | undefined, MessagesMessageid>;
|
2025-08-04 17:45:44 +02:00
|
|
|
|
2025-10-21 18:42:03 +02:00
|
|
|
chatid: ColumnType<ChatsChatid, ChatsChatid, ChatsChatid>;
|
2025-08-04 17:45:44 +02:00
|
|
|
|
2026-04-27 16:52:32 +02:00
|
|
|
message: ColumnType<string, string, string>;
|
2025-08-04 17:45:44 +02:00
|
|
|
|
2025-10-21 18:42:03 +02:00
|
|
|
time: ColumnType<Date, Date | string, Date | string>;
|
2025-08-04 17:45:44 +02:00
|
|
|
|
2025-10-21 18:42:03 +02:00
|
|
|
isread: ColumnType<boolean, boolean | undefined, boolean>;
|
2025-08-04 17:45:44 +02:00
|
|
|
|
2025-10-21 18:42:03 +02:00
|
|
|
sender: ColumnType<UsersId, UsersId, UsersId>;
|
2026-04-27 16:52:32 +02:00
|
|
|
|
|
|
|
|
reply_to_id: ColumnType<MessagesMessageid | null, MessagesMessageid | null, MessagesMessageid | null>;
|
|
|
|
|
|
|
|
|
|
is_forwarded: ColumnType<boolean, boolean | undefined, boolean>;
|
2025-08-04 17:45:44 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export type Messages = Selectable<MessagesTable>;
|
|
|
|
|
|
|
|
|
|
export type NewMessages = Insertable<MessagesTable>;
|
|
|
|
|
|
2026-04-28 17:46:34 +02:00
|
|
|
export type MessagesUpdate = Updateable<MessagesTable>;
|
|
|
|
|
|
|
|
|
|
export const messagesMessageid = z.uuid().transform(value => value as MessagesMessageid);
|
|
|
|
|
|
|
|
|
|
export const MessagesSchema = z.object({
|
|
|
|
|
messageid: messagesMessageid,
|
|
|
|
|
chatid: chatsChatid,
|
|
|
|
|
message: z.string(),
|
|
|
|
|
time: z.date(),
|
|
|
|
|
isread: z.boolean(),
|
|
|
|
|
sender: usersId,
|
|
|
|
|
reply_to_id: messagesMessageid.nullable(),
|
|
|
|
|
is_forwarded: z.boolean(),
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
export const NewMessagesSchema = z.object({
|
|
|
|
|
messageid: messagesMessageid.optional(),
|
|
|
|
|
chatid: chatsChatid,
|
|
|
|
|
message: z.string(),
|
2026-04-28 20:32:19 +02:00
|
|
|
time: z.union([z.date(), z.string()]).pipe(z.coerce.date()),
|
2026-04-28 17:46:34 +02:00
|
|
|
isread: z.boolean().optional(),
|
|
|
|
|
sender: usersId,
|
|
|
|
|
reply_to_id: messagesMessageid.optional().nullable(),
|
|
|
|
|
is_forwarded: z.boolean().optional(),
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
export const MessagesUpdateSchema = z.object({
|
|
|
|
|
messageid: messagesMessageid.optional(),
|
|
|
|
|
chatid: chatsChatid.optional(),
|
|
|
|
|
message: z.string().optional(),
|
2026-04-28 20:32:19 +02:00
|
|
|
time: z.union([z.date(), z.string()]).pipe(z.coerce.date()).optional(),
|
2026-04-28 17:46:34 +02:00
|
|
|
isread: z.boolean().optional(),
|
|
|
|
|
sender: usersId.optional(),
|
|
|
|
|
reply_to_id: messagesMessageid.optional().nullable(),
|
|
|
|
|
is_forwarded: z.boolean().optional(),
|
|
|
|
|
});
|