models

package
v1.9.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 31, 2025 License: MIT Imports: 52 Imported by: 0

Documentation

Index

Constants

View Source
const (
	APIVersion = "1.3.0"
)
View Source
const BreakoutRoomFormat = "%s-%s"

Variables

This section is empty.

Functions

This section is empty.

Types

type AnalyticsModel added in v1.5.0

type AnalyticsModel struct {
	// contains filtered or unexported fields
}

func NewAnalyticsModel added in v1.5.0

func NewAnalyticsModel(ctx context.Context, app *config.AppConfig, ds *dbservice.DatabaseService, rs *redisservice.RedisService, natsService *natsservice.NatsService, webhookNotifier *helpers.WebhookNotifier, logger *logrus.Logger) *AnalyticsModel

func (*AnalyticsModel) AddAnalyticsFileToDB added in v1.7.1

func (m *AnalyticsModel) AddAnalyticsFileToDB(roomTableId uint64, roomCreationTime int64, roomId, fileId string, stat os.FileInfo) (int64, error)

func (*AnalyticsModel) DeleteAnalytics added in v1.7.1

func (m *AnalyticsModel) DeleteAnalytics(r *plugnmeet.DeleteAnalyticsReq) error

func (*AnalyticsModel) FetchAnalytics added in v1.7.1

func (*AnalyticsModel) GetAnalyticsDownloadToken added in v1.7.1

func (m *AnalyticsModel) GetAnalyticsDownloadToken(r *plugnmeet.GetAnalyticsDownloadTokenReq) (string, error)

GetAnalyticsDownloadToken will use the same JWT token generator as plugNmeet is using

func (*AnalyticsModel) HandleEvent added in v1.5.0

func (m *AnalyticsModel) HandleEvent(d *plugnmeet.AnalyticsDataMsg)

func (*AnalyticsModel) PrepareToExportAnalytics added in v1.5.0

func (m *AnalyticsModel) PrepareToExportAnalytics(roomId, sid, meta string)

PrepareToExportAnalytics will export analytics data and create file this method is the final call after proper delay

func (*AnalyticsModel) VerifyAnalyticsToken added in v1.7.1

func (m *AnalyticsModel) VerifyAnalyticsToken(token string) (string, int, error)

VerifyAnalyticsToken verify token & provide file path

type AuthModel added in v1.7.1

type AuthModel struct {
	// contains filtered or unexported fields
}

func NewAuthModel added in v1.7.1

func NewAuthModel(app *config.AppConfig, natsService *natsservice.NatsService, logger *logrus.Logger) *AuthModel

func (*AuthModel) GeneratePNMJoinToken added in v1.7.1

func (m *AuthModel) GeneratePNMJoinToken(c *plugnmeet.PlugNmeetTokenClaims) (string, error)

func (*AuthModel) RenewPNMToken added in v1.7.1

func (m *AuthModel) RenewPNMToken(token string, gracefulPeriod time.Duration) (string, error)

RenewPNMToken we'll renew token

func (*AuthModel) UnsafeClaimsWithoutVerification added in v1.8.1

func (m *AuthModel) UnsafeClaimsWithoutVerification(token string) (*plugnmeet.PlugNmeetTokenClaims, error)

func (*AuthModel) ValidateLivekitWebhookToken added in v1.7.1

func (m *AuthModel) ValidateLivekitWebhookToken(body []byte, token string) (bool, error)

func (*AuthModel) VerifyPlugNmeetAccessToken added in v1.7.1

func (m *AuthModel) VerifyPlugNmeetAccessToken(token string, gracefulPeriod time.Duration) (*plugnmeet.PlugNmeetTokenClaims, error)

type BBBApiWrapperModel added in v1.5.13

type BBBApiWrapperModel struct {
	// contains filtered or unexported fields
}

func NewBBBApiWrapperModel added in v1.5.13

func NewBBBApiWrapperModel(app *config.AppConfig, ds *dbservice.DatabaseService, rs *redisservice.RedisService, rrm *RecordingModel, logger *logrus.Logger) *BBBApiWrapperModel

func (*BBBApiWrapperModel) GetRecordings added in v1.5.13

type BreakoutRoomModel added in v1.7.1

type BreakoutRoomModel struct {
	// contains filtered or unexported fields
}

func NewBreakoutRoomModel

func NewBreakoutRoomModel(rm *RoomModel, natsService *natsservice.NatsService) *BreakoutRoomModel

func (*BreakoutRoomModel) CreateBreakoutRooms added in v1.7.1

func (m *BreakoutRoomModel) CreateBreakoutRooms(r *plugnmeet.CreateBreakoutRoomsReq) error

func (*BreakoutRoomModel) EndAllBreakoutRoomsByParentRoomId added in v1.7.1

func (m *BreakoutRoomModel) EndAllBreakoutRoomsByParentRoomId(ctx context.Context, parentRoomId string) error

func (*BreakoutRoomModel) EndBreakoutRoom added in v1.7.1

func (m *BreakoutRoomModel) EndBreakoutRoom(ctx context.Context, r *plugnmeet.EndBreakoutRoomReq) error

func (*BreakoutRoomModel) GetBreakoutRooms added in v1.7.1

func (m *BreakoutRoomModel) GetBreakoutRooms(roomId string) ([]*plugnmeet.BreakoutRoom, error)

func (*BreakoutRoomModel) GetMyBreakoutRooms added in v1.7.1

func (m *BreakoutRoomModel) GetMyBreakoutRooms(roomId, userId string) (*plugnmeet.BreakoutRoom, error)

func (*BreakoutRoomModel) IncreaseBreakoutRoomDuration added in v1.7.1

func (m *BreakoutRoomModel) IncreaseBreakoutRoomDuration(r *plugnmeet.IncreaseBreakoutRoomDurationReq) error

func (*BreakoutRoomModel) JoinBreakoutRoom added in v1.7.1

func (m *BreakoutRoomModel) JoinBreakoutRoom(ctx context.Context, r *plugnmeet.JoinBreakoutRoomReq) (string, error)

func (*BreakoutRoomModel) PostTaskAfterRoomEndWebhook added in v1.7.1

func (m *BreakoutRoomModel) PostTaskAfterRoomEndWebhook(ctx context.Context, roomId, metadata string) error

func (*BreakoutRoomModel) PostTaskAfterRoomStartWebhook added in v1.7.1

func (m *BreakoutRoomModel) PostTaskAfterRoomStartWebhook(roomId string, metadata *plugnmeet.RoomMetadata) error

func (*BreakoutRoomModel) SendBreakoutRoomMsg added in v1.7.1

func (m *BreakoutRoomModel) SendBreakoutRoomMsg(r *plugnmeet.BroadcastBreakoutRoomMsgReq) error

type ConvertWhiteboardFileReq added in v1.7.1

type ConvertWhiteboardFileReq struct {
	RoomSid  string `json:"roomSid" query:"roomSid"`
	RoomId   string `json:"roomId" query:"roomId"`
	UserId   string `json:"userId" query:"userId"`
	FilePath string `json:"filePath" query:"filePath"`
}

ConvertWhiteboardFileReq represents the request structure for converting a whiteboard file.

type ConvertWhiteboardFileRes

type ConvertWhiteboardFileRes struct {
	Status     bool   `json:"status"`
	Msg        string `json:"msg"`
	FileName   string `json:"fileName"`
	FileId     string `json:"fileId"`
	FilePath   string `json:"filePath"`
	TotalPages int    `json:"totalPages"`
}

ConvertWhiteboardFileRes represents the response structure after converting a whiteboard file.

type EtherpadDataTypes

type EtherpadDataTypes struct {
	AuthorID        string `json:"authorID"`
	GroupID         string `json:"groupID"`
	SessionID       string `json:"sessionID"`
	PadID           string `json:"padID"`
	ReadOnlyID      string `json:"readOnlyID"`
	TotalPads       int64  `json:"totalPads"`
	TotalSessions   int64  `json:"totalSessions"`
	TotalActivePads int64  `json:"totalActivePads"`
}

type EtherpadHttpRes

type EtherpadHttpRes struct {
	Code    int64             `json:"code"`
	Message string            `json:"message"`
	Data    EtherpadDataTypes `json:"data"`
}

type EtherpadModel

type EtherpadModel struct {
	// contains filtered or unexported fields
}

func NewEtherpadModel

func NewEtherpadModel(ctx context.Context, app *config.AppConfig, ds *dbservice.DatabaseService, rs *redisservice.RedisService, natsService *natsservice.NatsService, analyticsModel *AnalyticsModel, logger *logrus.Logger) *EtherpadModel

func (*EtherpadModel) ChangeEtherpadStatus

func (m *EtherpadModel) ChangeEtherpadStatus(r *plugnmeet.ChangeEtherpadStatusReq) error

func (*EtherpadModel) CleanAfterRoomEnd

func (m *EtherpadModel) CleanAfterRoomEnd(roomId, metadata string) error

func (*EtherpadModel) CleanPad

func (m *EtherpadModel) CleanPad(roomId, nodeId, padId string) error

CleanPad will delete the group, session & pad

func (*EtherpadModel) CreateSession

func (m *EtherpadModel) CreateSession(roomId, requestedUserId string) (*plugnmeet.CreateEtherpadSessionRes, error)

CreateSession will create group, pad, session return padId, readonlyPadId

type ExDisplayModel added in v1.7.1

type ExDisplayModel struct {
	// contains filtered or unexported fields
}

func NewExDisplayModel added in v1.7.1

func NewExDisplayModel(app *config.AppConfig, ds *dbservice.DatabaseService, rs *redisservice.RedisService, natsService *natsservice.NatsService, analyticsModel *AnalyticsModel, logger *logrus.Logger) *ExDisplayModel

func (*ExDisplayModel) HandleTask added in v1.7.1

type ExMediaModel added in v1.7.1

type ExMediaModel struct {
	// contains filtered or unexported fields
}

func NewExMediaModel added in v1.7.1

func NewExMediaModel(app *config.AppConfig, ds *dbservice.DatabaseService, rs *redisservice.RedisService, natsService *natsservice.NatsService, analyticsModel *AnalyticsModel, logger *logrus.Logger) *ExMediaModel

func (*ExMediaModel) HandleTask added in v1.7.1

func (m *ExMediaModel) HandleTask(req *plugnmeet.ExternalMediaPlayerReq) error

type FileModel added in v1.7.1

type FileModel struct {
	// contains filtered or unexported fields
}

func NewFileModel added in v1.7.1

func NewFileModel(ctx context.Context, app *config.AppConfig, ds *dbservice.DatabaseService, natsService *natsservice.NatsService, logger *logrus.Logger) *FileModel

func (*FileModel) ConvertAndBroadcastWhiteboardFile added in v1.7.1

func (m *FileModel) ConvertAndBroadcastWhiteboardFile(roomId, roomSid, filePath string) (*ConvertWhiteboardFileRes, error)

ConvertAndBroadcastWhiteboardFile will convert & broadcast files for whiteboard.

func (*FileModel) DeleteRoomUploadedDir added in v1.7.1

func (m *FileModel) DeleteRoomUploadedDir(roomSid string) error

func (*FileModel) DownloadAndProcessPreUploadWBfile added in v1.7.1

func (m *FileModel) DownloadAndProcessPreUploadWBfile(roomId, roomSid, fileUrl string, log *logrus.Entry) (*ConvertWhiteboardFileRes, error)

DownloadAndProcessPreUploadWBfile downloads and processes a pre-uploaded whiteboard file. It validates the file, saves it, and triggers conversion and broadcasting. This should be run in a separate goroutine due to its potentially long execution time.

func (*FileModel) GetRoomFilesByType added in v1.9.4

func (m *FileModel) GetRoomFilesByType(roomId string, fileType plugnmeet.RoomUploadedFileType) (*plugnmeet.GetRoomUploadedFilesRes, error)

GetRoomFilesByType retrieves all file metadata for a given room, filtered by file type.

func (*FileModel) ResumableFileUpload added in v1.7.1

func (m *FileModel) ResumableFileUpload(c *fiber.Ctx) (*plugnmeet.UploadedFileRes, *fiber.Error)

ResumableFileUpload method can only be use if you are using resumable.js as your frontend. Library link: https://github.com/23/resumable.js

func (*FileModel) UploadBase64EncodedData added in v1.8.2

func (*FileModel) UploadedFileMerge added in v1.7.1

func (m *FileModel) UploadedFileMerge(req *plugnmeet.UploadedFileMergeReq) (*plugnmeet.UploadedFileRes, error)

UploadedFileMerge will combine all the parts and create a final file

func (*FileModel) ValidateMimeType added in v1.7.1

func (m *FileModel) ValidateMimeType(mtype *mimetype.MIME) error

type IngressModel added in v1.3.4

type IngressModel struct {
	// contains filtered or unexported fields
}

func NewIngressModel added in v1.3.4

func NewIngressModel(app *config.AppConfig, ds *dbservice.DatabaseService, rs *redisservice.RedisService, lk *livekitservice.LivekitService, natsService *natsservice.NatsService, analyticsModel *AnalyticsModel, logger *logrus.Logger) *IngressModel

func (*IngressModel) CreateIngress added in v1.3.4

type JanitorModel added in v1.9.3

type JanitorModel struct {
	// contains filtered or unexported fields
}

JanitorModel performs various background cleanup and maintenance tasks for the application.

func NewJanitorModel added in v1.9.3

func NewJanitorModel(mainCtx context.Context, app *config.AppConfig, ds *dbservice.DatabaseService, rs *redisservice.RedisService, natsService *natsservice.NatsService, lk *livekitservice.LivekitService, rm *RoomModel, rmDuration *RoomDurationModel, logger *logrus.Logger) *JanitorModel

NewJanitorModel creates a new JanitorModel.

func (*JanitorModel) Shutdown added in v1.9.4

func (m *JanitorModel) Shutdown()

func (*JanitorModel) StartJanitor added in v1.9.3

func (m *JanitorModel) StartJanitor()

StartJanitor starts the background janitor process. It uses a leader election mechanism to ensure only one instance runs the tasks.

type LTIV1FetchRecordingsReq

type LTIV1FetchRecordingsReq struct {
	From    uint32 `json:"from"`
	Limit   uint32 `json:"limit"`
	OrderBy string `json:"order_by"`
}

type LtiClaims

type LtiClaims struct {
	UserId              string               `json:"user_id"`
	Name                string               `json:"name"`
	IsAdmin             bool                 `json:"is_admin"`
	RoomId              string               `json:"room_id"`
	RoomTitle           string               `json:"room_title"`
	LtiCustomParameters *LtiCustomParameters `json:"lti_custom_parameters,omitempty"`
}

type LtiCustomDesign

type LtiCustomDesign struct {
	PrimaryColor    string `json:"primary_color,omitempty"`
	SecondaryColor  string `json:"secondary_color,omitempty"`
	BackgroundColor string `json:"background_color,omitempty"`
}

type LtiCustomParameters

type LtiCustomParameters struct {
	RoomDuration               uint64           `json:"room_duration,omitempty"`
	AllowPolls                 *bool            `json:"allow_polls,omitempty"`
	AllowSharedNotePad         *bool            `json:"allow_shared_note_pad,omitempty"`
	AllowBreakoutRoom          *bool            `json:"allow_breakout_room,omitempty"`
	AllowRecording             *bool            `json:"allow_recording,omitempty"`
	AllowRTMP                  *bool            `json:"allow_rtmp,omitempty"`
	AllowViewOtherWebcams      *bool            `json:"allow_view_other_webcams,omitempty"`
	AllowViewOtherParticipants *bool            `json:"allow_view_other_users_list,omitempty"`
	MuteOnStart                *bool            `json:"mute_on_start,omitempty"`
	LtiCustomDesign            *LtiCustomDesign `json:"lti_custom_design,omitempty"`
}

type LtiV1Model added in v1.7.1

type LtiV1Model struct {
	// contains filtered or unexported fields
}

func NewLtiV1Model added in v1.7.1

func NewLtiV1Model(app *config.AppConfig, rm *RoomModel, um *UserModel) *LtiV1Model

func (*LtiV1Model) LTIV1JoinRoom added in v1.7.1

func (m *LtiV1Model) LTIV1JoinRoom(ctx context.Context, c *plugnmeet.LtiClaims) (string, error)

func (*LtiV1Model) LTIV1Landing added in v1.7.1

func (m *LtiV1Model) LTIV1Landing(c *fiber.Ctx, requests, signingURL string) error

func (*LtiV1Model) LTIV1VerifyHeaderToken added in v1.7.1

func (m *LtiV1Model) LTIV1VerifyHeaderToken(token string) (*LtiClaims, error)

func (*LtiV1Model) ToJWT added in v1.7.1

func (m *LtiV1Model) ToJWT(c *plugnmeet.LtiClaims) (string, error)

func (*LtiV1Model) VerifyAuth added in v1.7.1

func (m *LtiV1Model) VerifyAuth(requests, signingURL string) (*url.Values, error)

type NatsModel added in v1.7.1

type NatsModel struct {
	// contains filtered or unexported fields
}

func NewNatsModel added in v1.7.1

func NewNatsModel(app *config.AppConfig, ds *dbservice.DatabaseService, rs *redisservice.RedisService, natsService *natsservice.NatsService, lk *livekitservice.LivekitService, analyticsModel *AnalyticsModel, authModel *AuthModel, userModel *UserModel, logger *logrus.Logger) *NatsModel

func (*NatsModel) GenerateLivekitToken added in v1.7.1

func (m *NatsModel) GenerateLivekitToken(roomId string, userInfo *plugnmeet.NatsKvUserInfo) (string, error)

func (*NatsModel) HandleClientPing added in v1.7.1

func (m *NatsModel) HandleClientPing(roomId, userId string)

func (*NatsModel) HandleFromClientToServerReq added in v1.7.1

func (m *NatsModel) HandleFromClientToServerReq(roomId, userId string, req *plugnmeet.NatsMsgClientToServer)

func (*NatsModel) HandleInitialData added in v1.7.1

func (m *NatsModel) HandleInitialData(roomId, userId string)

func (*NatsModel) HandleSendUsersList added in v1.7.1

func (m *NatsModel) HandleSendUsersList(roomId, userId string)

func (*NatsModel) OnAfterUserDisconnected added in v1.7.1

func (m *NatsModel) OnAfterUserDisconnected(roomId, userId string)

OnAfterUserDisconnected should be run in separate goroutine we'll wait for 5 seconds before declare user as offline but will broadcast as disconnected

func (*NatsModel) OnAfterUserJoined added in v1.7.1

func (m *NatsModel) OnAfterUserJoined(roomId, userId string)

func (*NatsModel) RenewPNMToken added in v1.7.1

func (m *NatsModel) RenewPNMToken(roomId, userId, token string)

type PollModel added in v1.7.1

type PollModel struct {
	// contains filtered or unexported fields
}

func NewPollModel added in v1.7.1

func NewPollModel(app *config.AppConfig, ds *dbservice.DatabaseService, rs *redisservice.RedisService, natsService *natsservice.NatsService, analyticsModel *AnalyticsModel, logger *logrus.Logger) *PollModel

func (*PollModel) CleanUpPolls added in v1.7.1

func (m *PollModel) CleanUpPolls(roomId string) error

func (*PollModel) ClosePoll added in v1.7.1

func (m *PollModel) ClosePoll(r *plugnmeet.ClosePollReq) error

func (*PollModel) CreatePoll added in v1.7.1

func (m *PollModel) CreatePoll(r *plugnmeet.CreatePollReq) (string, error)

func (*PollModel) GetPollResponsesDetails added in v1.7.1

func (m *PollModel) GetPollResponsesDetails(roomId, pollId string) (map[string]string, error)

func (*PollModel) GetPollsStats added in v1.7.1

func (m *PollModel) GetPollsStats(roomId string) (*plugnmeet.PollsStats, error)

func (*PollModel) GetResponsesResult added in v1.7.1

func (m *PollModel) GetResponsesResult(roomId, pollId string) (*plugnmeet.PollResponsesResult, error)

func (*PollModel) ListPolls added in v1.7.1

func (m *PollModel) ListPolls(roomId string) ([]*plugnmeet.PollInfo, error)

func (*PollModel) ManageActivation added in v1.8.2

func (m *PollModel) ManageActivation(req *plugnmeet.ActivatePollsReq) error

func (*PollModel) UserSelectedOption added in v1.7.1

func (m *PollModel) UserSelectedOption(roomId, pollId, userId string) (uint64, error)

func (*PollModel) UserSubmitResponse added in v1.7.1

func (m *PollModel) UserSubmitResponse(r *plugnmeet.SubmitPollResponseReq) error

type RecorderModel added in v1.4.0

type RecorderModel struct {
	// contains filtered or unexported fields
}

func NewRecorderModel added in v1.4.0

func NewRecorderModel(app *config.AppConfig, ds *dbservice.DatabaseService, rs *redisservice.RedisService, natsService *natsservice.NatsService, um *UserModel, logger *logrus.Logger) *RecorderModel

func (*RecorderModel) SendMsgToRecorder added in v1.4.0

func (m *RecorderModel) SendMsgToRecorder(req *plugnmeet.RecordingReq) error

type RecorderReq

type RecorderReq struct {
	From        string `json:"from"`
	Task        string `json:"task"`
	RoomId      string `json:"room_id"`
	Sid         string `json:"sid"`
	RecordId    string `json:"record_id"`
	AccessToken string `json:"access_token"`
	RecorderId  string `json:"recorder_id"`
	RtmpUrl     string `json:"rtmp_url"`
}

type RecordingModel added in v1.3.1

type RecordingModel struct {
	// contains filtered or unexported fields
}

func NewRecordingModel

func NewRecordingModel(app *config.AppConfig, ds *dbservice.DatabaseService, rs *redisservice.RedisService, natsService *natsservice.NatsService, analyticsModel *AnalyticsModel, webhookNotifier *helpers.WebhookNotifier, logger *logrus.Logger) *RecordingModel

func (*RecordingModel) CreateTokenForDownload added in v1.7.1

func (m *RecordingModel) CreateTokenForDownload(path string) (string, error)

CreateTokenForDownload will generate token path format: sub_path/roomSid/filename

func (*RecordingModel) DeleteRecording added in v1.7.1

func (m *RecordingModel) DeleteRecording(r *plugnmeet.DeleteRecordingReq) error

func (*RecordingModel) FetchRecording added in v1.7.1

func (m *RecordingModel) FetchRecording(recordId string) (*plugnmeet.RecordingInfo, error)

FetchRecording to get single recording information from DB

func (*RecordingModel) FetchRecordings added in v1.7.1

func (*RecordingModel) GetDownloadToken added in v1.7.1

func (m *RecordingModel) GetDownloadToken(r *plugnmeet.GetDownloadTokenReq) (string, error)

GetDownloadToken will use the same JWT token generator as plugNmeet is using

func (*RecordingModel) HandleRecorderResp added in v1.3.1

func (m *RecordingModel) HandleRecorderResp(r *plugnmeet.RecorderToPlugNmeet, roomInfo *dbmodels.RoomInfo)

func (*RecordingModel) RecordingInfo added in v1.7.1

func (*RecordingModel) VerifyRecordingToken added in v1.7.1

func (m *RecordingModel) VerifyRecordingToken(token string) (string, int, error)

VerifyRecordingToken verify token & provide file path

type ResumableUploadReq added in v1.7.1

type ResumableUploadReq struct {
	RoomSid                   string `json:"roomSid" query:"roomSid"`
	RoomId                    string `json:"roomId" query:"roomId"`
	UserId                    string `json:"userId" query:"userId"`
	ResumableChunkNumber      int    `query:"resumableChunkNumber"`
	ResumableTotalChunks      int    `query:"resumableTotalChunks"`
	ResumableTotalSize        int64  `query:"resumableTotalSize"`
	ResumableIdentifier       string `query:"resumableIdentifier"`
	ResumableFilename         string `query:"resumableFilename"`
	ResumableCurrentChunkSize int64  `query:"resumableCurrentChunkSize"`
}

type RoomDurationInfo added in v1.5.4

type RoomDurationInfo struct {
	Duration  uint64 `redis:"duration"`
	StartedAt uint64 `redis:"startedAt"`
}

type RoomDurationModel added in v1.5.4

type RoomDurationModel struct {
	// contains filtered or unexported fields
}

func NewRoomDurationModel added in v1.5.4

func NewRoomDurationModel(app *config.AppConfig, rs *redisservice.RedisService, natsService *natsservice.NatsService, logger *logrus.Logger) *RoomDurationModel

func (*RoomDurationModel) AddRoomWithDurationInfo added in v1.5.4

func (m *RoomDurationModel) AddRoomWithDurationInfo(roomId string, r *RoomDurationInfo) error

func (*RoomDurationModel) CompareDurationWithParentRoom added in v1.5.4

func (m *RoomDurationModel) CompareDurationWithParentRoom(mainRoomId string, duration uint64) error

func (*RoomDurationModel) DeleteRoomWithDuration added in v1.5.4

func (m *RoomDurationModel) DeleteRoomWithDuration(roomId string) error

func (*RoomDurationModel) GetRoomDurationInfo added in v1.5.4

func (m *RoomDurationModel) GetRoomDurationInfo(roomId string) (*RoomDurationInfo, error)

func (*RoomDurationModel) GetRoomsWithDurationMap added in v1.5.4

func (m *RoomDurationModel) GetRoomsWithDurationMap() map[string]RoomDurationInfo

func (*RoomDurationModel) IncreaseRoomDuration added in v1.5.4

func (m *RoomDurationModel) IncreaseRoomDuration(roomId string, duration uint64) (uint64, error)

type RoomModel added in v1.3.1

type RoomModel struct {
	// contains filtered or unexported fields
}

func NewRoomModel

func NewRoomModel(ctx context.Context, app *config.AppConfig, ds *dbservice.DatabaseService, rs *redisservice.RedisService, lk *livekitservice.LivekitService, natsService *natsservice.NatsService, webhookNotifier *helpers.WebhookNotifier, userModel *UserModel, recorderModel *RecorderModel, fileModel *FileModel, roomDuration *RoomDurationModel, etherpadModel *EtherpadModel, pollModel *PollModel, speechToText *SpeechToTextModel, analyticsModel *AnalyticsModel, logger *logrus.Logger) *RoomModel

func (*RoomModel) ChangeVisibility added in v1.7.1

func (m *RoomModel) ChangeVisibility(r *plugnmeet.ChangeVisibilityRes) (bool, string)

func (*RoomModel) CreateRoom added in v1.7.1

func (*RoomModel) EndRoom added in v1.7.1

func (m *RoomModel) EndRoom(ctx context.Context, r *plugnmeet.RoomEndReq) (bool, string)

EndRoom now accepts context and userIDForLog

func (*RoomModel) FetchPastRooms added in v1.7.1

func (*RoomModel) GetActiveRoomInfo added in v1.7.1

func (*RoomModel) GetActiveRoomsInfo added in v1.3.1

func (m *RoomModel) GetActiveRoomsInfo() (bool, string, []*plugnmeet.ActiveRoomWithParticipant)

func (*RoomModel) OnAfterRoomEnded added in v1.7.1

func (m *RoomModel) OnAfterRoomEnded(roomID, roomSID, metadata, roomStatus string)

func (*RoomModel) SetBreakoutRoomModel added in v1.9.3

func (m *RoomModel) SetBreakoutRoomModel(bm *BreakoutRoomModel)

SetBreakoutRoomModel is an initializer to prevent circular dependency.

type SendBreakoutRoomMsgReq

type SendBreakoutRoomMsgReq struct {
	RoomId string
	Msg    string `json:"msg" validate:"required"`
}

type SpeechToTextModel added in v1.7.1

type SpeechToTextModel struct {
	// contains filtered or unexported fields
}

func NewSpeechToTextModel added in v1.7.1

func NewSpeechToTextModel(app *config.AppConfig, ds *dbservice.DatabaseService, rs *redisservice.RedisService, natsService *natsservice.NatsService, analyticsModel *AnalyticsModel, webhookNotifier *helpers.WebhookNotifier, logger *logrus.Logger) *SpeechToTextModel

func (*SpeechToTextModel) GenerateAzureToken added in v1.7.1

func (m *SpeechToTextModel) GenerateAzureToken(r *plugnmeet.GenerateAzureTokenReq, requestedUserId string) error

func (*SpeechToTextModel) OnAfterRoomEnded added in v1.7.1

func (m *SpeechToTextModel) OnAfterRoomEnded(roomId, sId string) error

func (*SpeechToTextModel) RenewAzureToken added in v1.7.1

func (m *SpeechToTextModel) RenewAzureToken(r *plugnmeet.AzureTokenRenewReq, requestedUserId string) error

func (*SpeechToTextModel) SpeechServiceUserStatus added in v1.7.1

func (m *SpeechToTextModel) SpeechServiceUserStatus(r *plugnmeet.SpeechServiceUserStatusReq) error

func (*SpeechToTextModel) SpeechServiceUsersUsage added in v1.7.1

func (m *SpeechToTextModel) SpeechServiceUsersUsage(roomId, rSid, userId string, task plugnmeet.SpeechServiceUserStatusTasks) error

func (*SpeechToTextModel) SpeechToTextTranslationServiceStart added in v1.7.1

func (m *SpeechToTextModel) SpeechToTextTranslationServiceStart(r *plugnmeet.SpeechToTextTranslationReq) error

type UserModel added in v1.3.1

type UserModel struct {
	// contains filtered or unexported fields
}

func NewUserModel

func NewUserModel(app *config.AppConfig, ds *dbservice.DatabaseService, rs *redisservice.RedisService, lk *livekitservice.LivekitService, natsService *natsservice.NatsService, analyticsModel *AnalyticsModel, logger *logrus.Logger) *UserModel

func (*UserModel) AssignLockSettingsToUser added in v1.7.1

func (m *UserModel) AssignLockSettingsToUser(meta *plugnmeet.RoomMetadata, g *plugnmeet.GenerateTokenReq)

AssignLockSettingsToUser will assign lock to a non-admin user.

func (*UserModel) CommonValidation added in v1.3.1

func (m *UserModel) CommonValidation(c *fiber.Ctx) error

func (*UserModel) CreateNewPresenter added in v1.7.1

func (m *UserModel) CreateNewPresenter(r *plugnmeet.GenerateTokenReq) error

CreateNewPresenter verify if any presenter already online or not if not then it promote requested admin to be presenter

func (*UserModel) GetPNMJoinToken added in v1.7.1

func (m *UserModel) GetPNMJoinToken(ctx context.Context, g *plugnmeet.GenerateTokenReq) (string, error)

func (*UserModel) LowerHand added in v1.7.1

func (m *UserModel) LowerHand(roomId, userId string)

func (*UserModel) MuteUnMuteTrack added in v1.3.1

func (m *UserModel) MuteUnMuteTrack(r *plugnmeet.MuteUnMuteTrackReq) error

MuteUnMuteTrack can be used to mute or unmute track if track_sid wasn't send then it will find the microphone track & mute it for unmute you'll require enabling "enable_remote_unmute: true" in livekit under room settings. For privacy reason we aren't using it.

func (*UserModel) RaisedHand added in v1.7.1

func (m *UserModel) RaisedHand(roomId, userId, msg string)

func (*UserModel) RemoveParticipant added in v1.3.1

func (m *UserModel) RemoveParticipant(r *plugnmeet.RemoveParticipantReq) error

func (*UserModel) SwitchPresenter added in v1.3.1

func (m *UserModel) SwitchPresenter(r *plugnmeet.SwitchPresenterReq) error

SwitchPresenter promotes the new presenter *before* demoting the old one and ensures the requesting admin becomes the presenter on demotion, guaranteeing the room is never left without a presenter.

func (*UserModel) UpdateUserLockSettings added in v1.3.1

func (m *UserModel) UpdateUserLockSettings(r *plugnmeet.UpdateUserLockSettingsReq) error

UpdateUserLockSettings is the main entry point for updating lock settings. It now acts as a router for single-user or all-user updates.

type WaitingRoomModel added in v1.7.1

type WaitingRoomModel struct {
	// contains filtered or unexported fields
}

func NewWaitingRoomModel

func NewWaitingRoomModel(app *config.AppConfig, rs *redisservice.RedisService, natsService *natsservice.NatsService, logger *logrus.Logger) *WaitingRoomModel

func (*WaitingRoomModel) ApproveWaitingUsers added in v1.7.1

func (m *WaitingRoomModel) ApproveWaitingUsers(r *plugnmeet.ApproveWaitingUsersReq) error

func (*WaitingRoomModel) UpdateWaitingRoomMessage added in v1.7.1

func (m *WaitingRoomModel) UpdateWaitingRoomMessage(r *plugnmeet.UpdateWaitingRoomMessageReq) error

type WebhookModel added in v1.7.1

type WebhookModel struct {
	// contains filtered or unexported fields
}

func NewWebhookModel

func NewWebhookModel(ctx context.Context, app *config.AppConfig, ds *dbservice.DatabaseService, rs *redisservice.RedisService, natsService *natsservice.NatsService, lk *livekitservice.LivekitService, rm *RoomModel, analyticsModel *AnalyticsModel, rmDuration *RoomDurationModel, bm *BreakoutRoomModel, nm *NatsModel, sm *SpeechToTextModel, webhookNotifier *helpers.WebhookNotifier, logger *logrus.Logger) *WebhookModel

func (*WebhookModel) HandleWebhookEvents added in v1.7.1

func (m *WebhookModel) HandleWebhookEvents(e *livekit.WebhookEvent)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL