import { Type, Static } from '@sinclair/typebox' import { date, id } from './utils' import { MemberWithPublicUser } from './Member' export const types = [Type.Literal('text'), Type.Literal('file')] export const messageSchema = { id, value: Type.String({ minLength: 1, maxLength: 20_000 }), type: Type.Union(types, { default: 'text' }), mimetype: Type.String({ maxLength: 127, default: 'text/plain', format: 'mimetype' }), createdAt: date.createdAt, updatedAt: date.updatedAt, memberId: id, channelId: id } const messageObjectSchema = Type.Object(messageSchema) export type Message = Static export interface MessageWithMember extends Message { member: MemberWithPublicUser }