mirror of
https://github.com/johndoe6345789/metabuilder.git
synced 2026-04-25 06:14:59 +00:00
250 lines
4.6 KiB
YAML
250 lines
4.6 KiB
YAML
entity: IRCChannel
|
|
version: "1.0"
|
|
description: "IRC-style chat channel"
|
|
package: irc_webchat
|
|
|
|
fields:
|
|
id:
|
|
type: cuid
|
|
primary: true
|
|
generated: true
|
|
description: "Unique channel identifier"
|
|
|
|
tenantId:
|
|
type: uuid
|
|
required: true
|
|
index: true
|
|
description: "Tenant this channel belongs to"
|
|
|
|
name:
|
|
type: string
|
|
required: true
|
|
max_length: 50
|
|
pattern: "^#[a-zA-Z0-9_-]+$"
|
|
description: "Channel name (e.g., #general)"
|
|
|
|
topic:
|
|
type: string
|
|
nullable: true
|
|
max_length: 500
|
|
description: "Channel topic"
|
|
|
|
description:
|
|
type: string
|
|
nullable: true
|
|
description: "Channel description"
|
|
|
|
mode:
|
|
type: enum
|
|
required: true
|
|
values: [public, private, secret]
|
|
default: public
|
|
description: "Channel visibility mode"
|
|
|
|
password:
|
|
type: string
|
|
nullable: true
|
|
description: "Password for private channels"
|
|
|
|
maxUsers:
|
|
type: integer
|
|
nullable: true
|
|
description: "Maximum users limit"
|
|
|
|
slowMode:
|
|
type: integer
|
|
nullable: true
|
|
description: "Seconds between messages"
|
|
|
|
isDefault:
|
|
type: boolean
|
|
default: false
|
|
index: true
|
|
description: "Whether users auto-join this channel"
|
|
|
|
createdAt:
|
|
type: bigint
|
|
required: true
|
|
description: "Creation timestamp"
|
|
|
|
createdBy:
|
|
type: uuid
|
|
nullable: true
|
|
description: "Creator user ID"
|
|
|
|
indexes:
|
|
- fields: [tenantId, name]
|
|
unique: true
|
|
name: tenant_name
|
|
|
|
acl:
|
|
create:
|
|
moderator: true
|
|
read:
|
|
user: true
|
|
update:
|
|
moderator: true
|
|
delete:
|
|
admin: true
|
|
|
|
---
|
|
|
|
entity: IRCMessage
|
|
version: "1.0"
|
|
description: "IRC chat message"
|
|
package: irc_webchat
|
|
|
|
fields:
|
|
id:
|
|
type: cuid
|
|
primary: true
|
|
generated: true
|
|
description: "Unique message identifier"
|
|
|
|
tenantId:
|
|
type: uuid
|
|
required: true
|
|
description: "Tenant this message belongs to"
|
|
|
|
channelId:
|
|
type: cuid
|
|
required: true
|
|
index: true
|
|
description: "Channel this message belongs to"
|
|
|
|
userId:
|
|
type: uuid
|
|
required: true
|
|
index: true
|
|
description: "User who sent the message"
|
|
|
|
username:
|
|
type: string
|
|
required: true
|
|
description: "Username at time of message"
|
|
|
|
type:
|
|
type: enum
|
|
required: true
|
|
values: [message, action, notice, system, join, part, kick, ban]
|
|
default: message
|
|
description: "Message type"
|
|
|
|
content:
|
|
type: string
|
|
required: true
|
|
description: "Message content"
|
|
|
|
isCommand:
|
|
type: boolean
|
|
default: false
|
|
description: "Whether message was a command"
|
|
|
|
metadata:
|
|
type: json
|
|
nullable: true
|
|
description: "Additional data (mentions, links, etc.)"
|
|
|
|
createdAt:
|
|
type: bigint
|
|
required: true
|
|
index: true
|
|
description: "Message timestamp"
|
|
|
|
indexes:
|
|
- fields: [channelId, createdAt]
|
|
name: channel_time
|
|
|
|
acl:
|
|
create:
|
|
user: true
|
|
read:
|
|
user: true
|
|
update:
|
|
supergod: true
|
|
delete:
|
|
moderator: true
|
|
|
|
---
|
|
|
|
entity: IRCMembership
|
|
version: "1.0"
|
|
description: "User membership in an IRC channel"
|
|
package: irc_webchat
|
|
|
|
fields:
|
|
id:
|
|
type: cuid
|
|
primary: true
|
|
generated: true
|
|
description: "Unique membership identifier"
|
|
|
|
channelId:
|
|
type: cuid
|
|
required: true
|
|
index: true
|
|
description: "Channel ID"
|
|
|
|
userId:
|
|
type: uuid
|
|
required: true
|
|
index: true
|
|
description: "User ID"
|
|
|
|
username:
|
|
type: string
|
|
required: true
|
|
description: "Username"
|
|
|
|
role:
|
|
type: enum
|
|
required: true
|
|
values: [user, voice, halfop, op, admin, owner]
|
|
default: user
|
|
description: "User role in channel"
|
|
|
|
joinedAt:
|
|
type: bigint
|
|
required: true
|
|
description: "Join timestamp"
|
|
|
|
lastActive:
|
|
type: bigint
|
|
nullable: true
|
|
description: "Last activity timestamp"
|
|
|
|
isBanned:
|
|
type: boolean
|
|
default: false
|
|
description: "Whether user is banned"
|
|
|
|
isKicked:
|
|
type: boolean
|
|
default: false
|
|
description: "Whether user was kicked"
|
|
|
|
kickReason:
|
|
type: string
|
|
nullable: true
|
|
description: "Reason for kick"
|
|
|
|
metadata:
|
|
type: json
|
|
nullable: true
|
|
description: "User preferences in channel"
|
|
|
|
indexes:
|
|
- fields: [channelId, userId]
|
|
unique: true
|
|
name: channel_user
|
|
|
|
acl:
|
|
create:
|
|
user: true
|
|
read:
|
|
user: true
|
|
update:
|
|
moderator: true
|
|
delete:
|
|
moderator: true
|