mirror of
https://github.com/johndoe6345789/metabuilder.git
synced 2026-04-24 13:54:57 +00:00
config: yaml,shared,dbal (2 files)
This commit is contained in:
249
dbal/shared/api/schema/entities/packages/irc.yaml
Normal file
249
dbal/shared/api/schema/entities/packages/irc.yaml
Normal file
@@ -0,0 +1,249 @@
|
||||
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
|
||||
291
dbal/shared/api/schema/entities/packages/streaming.yaml
Normal file
291
dbal/shared/api/schema/entities/packages/streaming.yaml
Normal file
@@ -0,0 +1,291 @@
|
||||
entity: StreamChannel
|
||||
version: "1.0"
|
||||
description: "Live streaming channel"
|
||||
package: stream_cast
|
||||
|
||||
fields:
|
||||
id:
|
||||
type: cuid
|
||||
primary: true
|
||||
generated: true
|
||||
description: "Unique stream channel identifier"
|
||||
|
||||
tenantId:
|
||||
type: uuid
|
||||
required: true
|
||||
index: true
|
||||
description: "Tenant this channel belongs to"
|
||||
|
||||
name:
|
||||
type: string
|
||||
required: true
|
||||
max_length: 100
|
||||
description: "Channel name"
|
||||
|
||||
slug:
|
||||
type: string
|
||||
required: true
|
||||
pattern: "^[a-z0-9-]+$"
|
||||
description: "URL-friendly slug"
|
||||
|
||||
description:
|
||||
type: string
|
||||
nullable: true
|
||||
description: "Channel description"
|
||||
|
||||
thumbnail:
|
||||
type: string
|
||||
nullable: true
|
||||
description: "Thumbnail image path"
|
||||
|
||||
category:
|
||||
type: string
|
||||
nullable: true
|
||||
index: true
|
||||
description: "Content category"
|
||||
|
||||
status:
|
||||
type: enum
|
||||
required: true
|
||||
values: [offline, live, scheduled]
|
||||
default: offline
|
||||
index: true
|
||||
description: "Current stream status"
|
||||
|
||||
viewerCount:
|
||||
type: integer
|
||||
default: 0
|
||||
description: "Current viewer count"
|
||||
|
||||
streamKey:
|
||||
type: string
|
||||
nullable: true
|
||||
unique: true
|
||||
description: "Secret stream key"
|
||||
|
||||
rtmpUrl:
|
||||
type: string
|
||||
nullable: true
|
||||
description: "RTMP ingest URL"
|
||||
|
||||
hlsUrl:
|
||||
type: string
|
||||
nullable: true
|
||||
description: "HLS playback URL"
|
||||
|
||||
chatEnabled:
|
||||
type: boolean
|
||||
default: true
|
||||
description: "Whether chat is enabled"
|
||||
|
||||
isPublic:
|
||||
type: boolean
|
||||
default: true
|
||||
description: "Whether channel is publicly visible"
|
||||
|
||||
isMature:
|
||||
type: boolean
|
||||
default: false
|
||||
description: "Whether content is mature"
|
||||
|
||||
metadata:
|
||||
type: json
|
||||
nullable: true
|
||||
description: "Additional data (bitrate, resolution, etc.)"
|
||||
|
||||
createdAt:
|
||||
type: bigint
|
||||
required: true
|
||||
description: "Creation timestamp"
|
||||
|
||||
updatedAt:
|
||||
type: bigint
|
||||
nullable: true
|
||||
description: "Last update timestamp"
|
||||
|
||||
createdBy:
|
||||
type: uuid
|
||||
required: true
|
||||
description: "Channel owner"
|
||||
|
||||
indexes:
|
||||
- fields: [tenantId, slug]
|
||||
unique: true
|
||||
name: tenant_slug
|
||||
- fields: [status, viewerCount]
|
||||
name: live_popular
|
||||
|
||||
acl:
|
||||
create:
|
||||
user: true
|
||||
read:
|
||||
public: true
|
||||
update:
|
||||
self: true
|
||||
row_level: "createdBy = $user.id"
|
||||
admin: true
|
||||
delete:
|
||||
self: true
|
||||
row_level: "createdBy = $user.id"
|
||||
admin: true
|
||||
|
||||
---
|
||||
|
||||
entity: StreamSchedule
|
||||
version: "1.0"
|
||||
description: "Scheduled stream event"
|
||||
package: stream_cast
|
||||
|
||||
fields:
|
||||
id:
|
||||
type: cuid
|
||||
primary: true
|
||||
generated: true
|
||||
description: "Unique schedule identifier"
|
||||
|
||||
channelId:
|
||||
type: cuid
|
||||
required: true
|
||||
index: true
|
||||
description: "Parent channel"
|
||||
|
||||
title:
|
||||
type: string
|
||||
required: true
|
||||
max_length: 200
|
||||
description: "Stream title"
|
||||
|
||||
description:
|
||||
type: string
|
||||
nullable: true
|
||||
description: "Stream description"
|
||||
|
||||
startTime:
|
||||
type: bigint
|
||||
required: true
|
||||
index: true
|
||||
description: "Scheduled start timestamp"
|
||||
|
||||
endTime:
|
||||
type: bigint
|
||||
nullable: true
|
||||
description: "Expected end timestamp"
|
||||
|
||||
duration:
|
||||
type: integer
|
||||
nullable: true
|
||||
description: "Expected duration in minutes"
|
||||
|
||||
isRecurring:
|
||||
type: boolean
|
||||
default: false
|
||||
description: "Whether schedule repeats"
|
||||
|
||||
recurrence:
|
||||
type: json
|
||||
nullable: true
|
||||
description: "Recurrence rule (cron/rrule)"
|
||||
|
||||
notifyAt:
|
||||
type: bigint
|
||||
nullable: true
|
||||
description: "Notification timestamp"
|
||||
|
||||
metadata:
|
||||
type: json
|
||||
nullable: true
|
||||
description: "Additional data (guests, topics, etc.)"
|
||||
|
||||
createdAt:
|
||||
type: bigint
|
||||
required: true
|
||||
description: "Creation timestamp"
|
||||
|
||||
indexes:
|
||||
- fields: [channelId, startTime]
|
||||
name: channel_time
|
||||
|
||||
acl:
|
||||
create:
|
||||
user: true
|
||||
read:
|
||||
public: true
|
||||
update:
|
||||
self: true
|
||||
admin: true
|
||||
delete:
|
||||
self: true
|
||||
admin: true
|
||||
|
||||
---
|
||||
|
||||
entity: StreamScene
|
||||
version: "1.0"
|
||||
description: "Stream scene/layout configuration"
|
||||
package: stream_cast
|
||||
|
||||
fields:
|
||||
id:
|
||||
type: cuid
|
||||
primary: true
|
||||
generated: true
|
||||
description: "Unique scene identifier"
|
||||
|
||||
channelId:
|
||||
type: cuid
|
||||
required: true
|
||||
index: true
|
||||
description: "Parent channel"
|
||||
|
||||
name:
|
||||
type: string
|
||||
required: true
|
||||
max_length: 100
|
||||
description: "Scene name"
|
||||
|
||||
layout:
|
||||
type: json
|
||||
required: true
|
||||
description: "Scene layout composition"
|
||||
|
||||
sources:
|
||||
type: json
|
||||
required: true
|
||||
description: "Media sources (cameras, screens, overlays)"
|
||||
|
||||
transitions:
|
||||
type: json
|
||||
nullable: true
|
||||
description: "Scene transitions"
|
||||
|
||||
isActive:
|
||||
type: boolean
|
||||
default: false
|
||||
index: true
|
||||
description: "Whether scene is currently active"
|
||||
|
||||
sortOrder:
|
||||
type: integer
|
||||
default: 0
|
||||
description: "Display order"
|
||||
|
||||
createdAt:
|
||||
type: bigint
|
||||
required: true
|
||||
description: "Creation timestamp"
|
||||
|
||||
indexes:
|
||||
- fields: [channelId, isActive]
|
||||
name: channel_active
|
||||
|
||||
acl:
|
||||
create:
|
||||
user: true
|
||||
read:
|
||||
user: true
|
||||
update:
|
||||
self: true
|
||||
admin: true
|
||||
delete:
|
||||
self: true
|
||||
admin: true
|
||||
Reference in New Issue
Block a user