mirror of https://github.com/synctv-org/synctv
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
35 lines
762 B
Go
35 lines
762 B
Go
package op
|
|
|
|
import (
|
|
"errors"
|
|
|
|
"github.com/synctv-org/synctv/internal/db"
|
|
"github.com/synctv-org/synctv/internal/model"
|
|
)
|
|
|
|
type User struct {
|
|
model.User
|
|
}
|
|
|
|
func (u *User) CreateRoom(name, password string, conf ...db.CreateRoomConfig) (*model.Room, error) {
|
|
return db.CreateRoom(name, password, append(conf, db.WithCreator(&u.User))...)
|
|
}
|
|
|
|
func (u *User) NewMovie(movie model.MovieInfo) model.Movie {
|
|
return model.Movie{
|
|
MovieInfo: movie,
|
|
CreatorID: u.ID,
|
|
}
|
|
}
|
|
|
|
func (u *User) HasPermission(room *Room, permission model.Permission) bool {
|
|
return room.HasPermission(&u.User, permission)
|
|
}
|
|
|
|
func (u *User) DeleteRoom(room *Room) error {
|
|
if !u.HasPermission(room, model.CanDeleteRoom) {
|
|
return errors.New("no permission")
|
|
}
|
|
return DeleteRoom(room)
|
|
}
|