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.
89 lines
2.4 KiB
89 lines
2.4 KiB
package resolvers
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"time"
|
|
|
|
"git.aiterp.net/rpdata/api/graph2/graphcore"
|
|
"git.aiterp.net/rpdata/api/models"
|
|
)
|
|
|
|
// Queries
|
|
|
|
func (r *queryResolver) Log(ctx context.Context, id string) (*models.Log, error) {
|
|
return r.s.Logs.Find(ctx, id)
|
|
}
|
|
|
|
func (r *queryResolver) Logs(ctx context.Context, filter *models.LogFilter) ([]*models.Log, error) {
|
|
return r.s.Logs.List(ctx, filter)
|
|
}
|
|
|
|
// Mutations
|
|
|
|
func (r *mutationResolver) AddLog(ctx context.Context, input graphcore.LogAddInput) (*models.Log, error) {
|
|
open := input.Open != nil && *input.Open == true
|
|
title := ""
|
|
if input.Title != nil {
|
|
title = *input.Title
|
|
}
|
|
event := ""
|
|
if input.Event != nil {
|
|
event = *input.Event
|
|
}
|
|
description := ""
|
|
if input.Description != nil {
|
|
description = *input.Description
|
|
}
|
|
|
|
return r.s.Logs.Create(ctx, title, description, input.Channel, event, open)
|
|
}
|
|
|
|
func (r *mutationResolver) ImportLog(ctx context.Context, input graphcore.LogImportInput) ([]*models.Log, error) {
|
|
date := time.Time{}
|
|
if input.Date != nil {
|
|
date = *input.Date
|
|
}
|
|
|
|
tz := time.UTC
|
|
if input.Timezone != nil {
|
|
parsedTZ, err := time.LoadLocation(*input.Timezone)
|
|
if err != nil {
|
|
return nil, errors.New("Unknown timezone: " + *input.Timezone)
|
|
}
|
|
|
|
tz = parsedTZ
|
|
}
|
|
|
|
sessionThreshold := time.Hour * 12
|
|
if input.SessionThresholdMs != nil {
|
|
sessionThreshold = time.Duration(*input.SessionThresholdMs) * time.Millisecond
|
|
}
|
|
|
|
return r.s.Logs.Import(ctx, input.Importer, date, tz, input.ChannelName, sessionThreshold, input.Data)
|
|
}
|
|
|
|
func (r *mutationResolver) SplitLog(ctx context.Context, input graphcore.LogSplitInput) (*models.Log, error) {
|
|
return r.s.Logs.SplitLog(ctx, input.LogID, input.StartPostID)
|
|
}
|
|
|
|
func (r *mutationResolver) MergeLog(ctx context.Context, input graphcore.LogMergeInput) (*models.Log, error) {
|
|
removeAfter := input.RemoveAfter != nil && *input.RemoveAfter
|
|
|
|
return r.s.Logs.MergeLogs(ctx, input.TargetLogID, input.SourceLogID, removeAfter)
|
|
}
|
|
|
|
func (r *mutationResolver) EditLog(ctx context.Context, input graphcore.LogEditInput) (*models.Log, error) {
|
|
update := models.LogUpdate{
|
|
Open: input.Open,
|
|
Description: input.Description,
|
|
EventName: input.Event,
|
|
Title: input.Title,
|
|
}
|
|
|
|
return r.s.Logs.Update(ctx, input.ID, update)
|
|
}
|
|
|
|
func (r *mutationResolver) RemoveLog(ctx context.Context, input graphcore.LogRemoveInput) (*models.Log, error) {
|
|
return r.s.Logs.Delete(ctx, input.ID)
|
|
}
|