复制项目
This commit is contained in:
67
pkg/common/db/table/chat/livekit.go
Normal file
67
pkg/common/db/table/chat/livekit.go
Normal file
@@ -0,0 +1,67 @@
|
||||
package chat
|
||||
|
||||
import (
|
||||
"context"
|
||||
"time"
|
||||
)
|
||||
|
||||
// LiveKit 表示一台LiveKit服务器配置
|
||||
type LiveKit struct {
|
||||
ID string `bson:"_id" json:"id"` // 服务器唯一标识
|
||||
Name string `bson:"name" json:"name"` // 服务器名称
|
||||
URL string `bson:"url" json:"url"` // LiveKit服务器地址
|
||||
Key string `bson:"key" json:"key"` // API Key
|
||||
Secret string `bson:"secret" json:"secret"` // API Secret
|
||||
Region string `bson:"region" json:"region"` // 服务器区域
|
||||
Status int `bson:"status" json:"status"` // 状态:0-禁用,1-启用
|
||||
Priority int `bson:"priority" json:"priority"` // 优先级,数字越小优先级越高
|
||||
MaxRooms int `bson:"max_rooms" json:"max_rooms"` // 最大房间数
|
||||
MaxUsers int `bson:"max_users" json:"max_users"` // 最大用户数
|
||||
Description string `bson:"description" json:"description"` // 描述信息
|
||||
CreateTime time.Time `bson:"create_time" json:"create_time"` // 创建时间
|
||||
UpdateTime time.Time `bson:"update_time" json:"update_time"` // 更新时间
|
||||
}
|
||||
|
||||
// TableName 返回表名
|
||||
func (LiveKit) TableName() string {
|
||||
return "livekits"
|
||||
}
|
||||
|
||||
// LiveKitInterface 定义LiveKit数据库操作接口
|
||||
type LiveKitInterface interface {
|
||||
// Create 创建LiveKit服务器配置
|
||||
Create(ctx context.Context, livekits ...*LiveKit) error
|
||||
// Delete 删除LiveKit服务器配置
|
||||
Delete(ctx context.Context, ids []string) error
|
||||
// Update 更新LiveKit服务器配置
|
||||
Update(ctx context.Context, livekit *LiveKit) error
|
||||
// FindByID 根据ID查找LiveKit配置
|
||||
FindByID(ctx context.Context, id string) (*LiveKit, error)
|
||||
// FindByStatus 根据状态查找LiveKit配置列表
|
||||
FindByStatus(ctx context.Context, status int) ([]*LiveKit, error)
|
||||
// FindAll 查找所有LiveKit配置
|
||||
FindAll(ctx context.Context) ([]*LiveKit, error)
|
||||
// FindAvailable 查找可用的LiveKit服务器(按优先级排序)
|
||||
FindAvailable(ctx context.Context) ([]*LiveKit, error)
|
||||
// FindByRegion 根据区域查找LiveKit配置
|
||||
FindByRegion(ctx context.Context, region string) ([]*LiveKit, error)
|
||||
// UpdateStatus 更新服务器状态
|
||||
UpdateStatus(ctx context.Context, id string, status int) error
|
||||
// UpdatePriority 更新服务器优先级
|
||||
UpdatePriority(ctx context.Context, id string, priority int) error
|
||||
// GetNextAvailable 获取下一个可用的LiveKit服务器(负载均衡)
|
||||
GetNextAvailable(ctx context.Context) (*LiveKit, error)
|
||||
}
|
||||
|
||||
// 状态常量
|
||||
const (
|
||||
LiveKitStatusDisabled = 0 // 禁用
|
||||
LiveKitStatusEnabled = 1 // 启用
|
||||
)
|
||||
|
||||
// 默认值
|
||||
const (
|
||||
DefaultMaxRooms = 1000 // 默认最大房间数
|
||||
DefaultMaxUsers = 100 // 默认最大用户数
|
||||
DefaultPriority = 100 // 默认优先级
|
||||
)
|
||||
Reference in New Issue
Block a user