You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
2.2 KiB
79 lines
2.2 KiB
package queries
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
|
|
"git.aiterp.net/rpdata/api/graph2/input"
|
|
"git.aiterp.net/rpdata/api/internal/auth"
|
|
"git.aiterp.net/rpdata/api/models"
|
|
"git.aiterp.net/rpdata/api/models/changekeys"
|
|
"git.aiterp.net/rpdata/api/models/changes"
|
|
"git.aiterp.net/rpdata/api/models/channels"
|
|
)
|
|
|
|
// Queries
|
|
|
|
func (r *resolver) Channel(ctx context.Context, name string) (models.Channel, error) {
|
|
return channels.FindName(name)
|
|
}
|
|
|
|
func (r *resolver) Channels(ctx context.Context, filter *channels.Filter) ([]models.Channel, error) {
|
|
return channels.List(filter)
|
|
}
|
|
|
|
// Mutations
|
|
|
|
func (r *mutationResolver) AddChannel(ctx context.Context, input input.ChannelAddInput) (models.Channel, error) {
|
|
token := auth.TokenFromContext(ctx)
|
|
if !token.Authenticated() || !token.Permitted("channel.add") {
|
|
return models.Channel{}, errors.New("You are not permitted to add channels")
|
|
}
|
|
|
|
logged := false
|
|
if input.Logged != nil {
|
|
logged = *input.Logged
|
|
}
|
|
hub := false
|
|
if input.Hub != nil {
|
|
hub = *input.Hub
|
|
}
|
|
eventName := ""
|
|
if input.EventName != nil {
|
|
eventName = *input.EventName
|
|
}
|
|
locationName := ""
|
|
if input.LocationName != nil {
|
|
locationName = *input.LocationName
|
|
}
|
|
|
|
channel, err := channels.Add(input.Name, logged, hub, eventName, locationName)
|
|
if err != nil {
|
|
return models.Channel{}, errors.New("Failed to add channel: " + err.Error())
|
|
}
|
|
|
|
go changes.Submit("Channel", "add", token.UserID, true, changekeys.Listed(channel), channel)
|
|
|
|
return channel, nil
|
|
}
|
|
|
|
func (r *mutationResolver) EditChannel(ctx context.Context, input input.ChannelEditInput) (models.Channel, error) {
|
|
token := auth.TokenFromContext(ctx)
|
|
if !token.Authenticated() || !token.Permitted("channel.edit") {
|
|
return models.Channel{}, errors.New("You are not permitted to edit channels")
|
|
}
|
|
|
|
channel, err := channels.FindName(input.Name)
|
|
if err != nil {
|
|
return models.Channel{}, errors.New("Channel not found")
|
|
}
|
|
|
|
channel, err = channels.Edit(channel, input.Logged, input.Hub, input.EventName, input.LocationName)
|
|
if err != nil {
|
|
return models.Channel{}, errors.New("Failed to edit channel: " + err.Error())
|
|
}
|
|
|
|
go changes.Submit("Channel", "edit", token.UserID, true, changekeys.Listed(channel), channel)
|
|
|
|
return channel, nil
|
|
}
|