mirror of
https://github.com/johndoe6345789/metabuilder.git
synced 2026-04-25 22:34:56 +00:00
357 lines
8.0 KiB
JSON
357 lines
8.0 KiB
JSON
[
|
|
{
|
|
"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": "string",
|
|
"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"
|
|
}
|
|
],
|
|
"relations": {
|
|
"creator": {
|
|
"type": "belongs-to",
|
|
"entity": "User",
|
|
"foreign_key": "createdBy",
|
|
"nullable": true,
|
|
"on_delete": "set_null",
|
|
"description": "User who created this channel"
|
|
},
|
|
"messages": {
|
|
"type": "has-many",
|
|
"entity": "IRCMessage",
|
|
"foreign_key": "channelId",
|
|
"cascade_delete": true,
|
|
"description": "Messages posted in this channel"
|
|
},
|
|
"members": {
|
|
"type": "has-many",
|
|
"entity": "IRCMembership",
|
|
"foreign_key": "channelId",
|
|
"cascade_delete": true,
|
|
"description": "Users who are members of this channel"
|
|
}
|
|
},
|
|
"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": "string",
|
|
"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"
|
|
}
|
|
],
|
|
"relations": {
|
|
"channel": {
|
|
"type": "belongs-to",
|
|
"entity": "IRCChannel",
|
|
"foreign_key": "channelId",
|
|
"on_delete": "cascade",
|
|
"description": "Channel this message was posted in"
|
|
},
|
|
"author": {
|
|
"type": "belongs-to",
|
|
"entity": "User",
|
|
"foreign_key": "userId",
|
|
"on_delete": "restrict",
|
|
"description": "User who sent this message"
|
|
}
|
|
},
|
|
"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"
|
|
}
|
|
],
|
|
"relations": {
|
|
"channel": {
|
|
"type": "belongs-to",
|
|
"entity": "IRCChannel",
|
|
"foreign_key": "channelId",
|
|
"on_delete": "cascade",
|
|
"description": "Channel the user is a member of"
|
|
},
|
|
"user": {
|
|
"type": "belongs-to",
|
|
"entity": "User",
|
|
"foreign_key": "userId",
|
|
"on_delete": "cascade",
|
|
"description": "User who is a member of the channel"
|
|
}
|
|
},
|
|
"acl": {
|
|
"create": {
|
|
"user": true
|
|
},
|
|
"read": {
|
|
"user": true
|
|
},
|
|
"update": {
|
|
"moderator": true
|
|
},
|
|
"delete": {
|
|
"moderator": true
|
|
}
|
|
}
|
|
}
|
|
] |