import { chatsChatid, type ChatsChatid } from './Chats'; import { usersId, type UsersId } from './Users'; import type { ColumnType, Selectable, Insertable, Updateable } from 'kysely'; import { z } from 'zod'; /** Identifier type for public.messages */ export type MessagesMessageid = string & { __brand: 'public.messages' }; /** Represents the table public.messages */ export default interface MessagesTable { messageid: ColumnType; chatid: ColumnType; message: ColumnType; time: ColumnType; isread: ColumnType; sender: ColumnType; reply_to_id: ColumnType; is_forwarded: ColumnType; } export type Messages = Selectable; export type NewMessages = Insertable; export type MessagesUpdate = Updateable; 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(), time: z.union([z.date(), z.string()]).pipe(z.coerce.date()), 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(), time: z.union([z.date(), z.string()]).pipe(z.coerce.date()).optional(), isread: z.boolean().optional(), sender: usersId.optional(), reply_to_id: messagesMessageid.optional().nullable(), is_forwarded: z.boolean().optional(), });