31 lines
748 B
TypeScript
31 lines
748 B
TypeScript
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<typeof messageObjectSchema>
|
|
|
|
export interface MessageWithMember extends Message {
|
|
member: MemberWithPublicUser
|
|
}
|