implement scripts crud
This commit is contained in:
parent
2dcae799da
commit
a97738b378
@ -2,7 +2,11 @@ package service
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"fmt"
|
||||||
|
|
||||||
"git.itzana.me/strafesnet/maps-service/pkg/api"
|
"git.itzana.me/strafesnet/maps-service/pkg/api"
|
||||||
|
"git.itzana.me/strafesnet/maps-service/pkg/datastore"
|
||||||
|
"git.itzana.me/strafesnet/maps-service/pkg/model"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@ -14,7 +18,28 @@ var (
|
|||||||
//
|
//
|
||||||
// POST /scripts
|
// POST /scripts
|
||||||
func (svc *Service) CreateScript(ctx context.Context, req *api.ScriptCreate) (*api.ID, error){
|
func (svc *Service) CreateScript(ctx context.Context, req *api.ScriptCreate) (*api.ID, error){
|
||||||
return nil,nil
|
userInfo, ok := ctx.Value("UserInfo").(*UserInfo)
|
||||||
|
if !ok{
|
||||||
|
return nil, ErrUserInfo
|
||||||
|
}
|
||||||
|
|
||||||
|
if !userInfo.Roles.ScriptWrite{
|
||||||
|
return nil, ErrPermissionDenied
|
||||||
|
}
|
||||||
|
|
||||||
|
script, err := svc.DB.Scripts().Create(ctx, model.Script{
|
||||||
|
ID: 0,
|
||||||
|
Hash: 0, // TODO
|
||||||
|
Source: req.Source,
|
||||||
|
SubmissionID: req.SubmissionID.Or(0),
|
||||||
|
})
|
||||||
|
if err != nil{
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return &api.ID{
|
||||||
|
ID:script.ID,
|
||||||
|
}, nil
|
||||||
}
|
}
|
||||||
// DeleteScript implements deleteScript operation.
|
// DeleteScript implements deleteScript operation.
|
||||||
//
|
//
|
||||||
@ -22,7 +47,16 @@ func (svc *Service) CreateScript(ctx context.Context, req *api.ScriptCreate) (*a
|
|||||||
//
|
//
|
||||||
// DELETE /scripts/{ScriptID}
|
// DELETE /scripts/{ScriptID}
|
||||||
func (svc *Service) DeleteScript(ctx context.Context, params api.DeleteScriptParams) error{
|
func (svc *Service) DeleteScript(ctx context.Context, params api.DeleteScriptParams) error{
|
||||||
return nil
|
userInfo, ok := ctx.Value("UserInfo").(*UserInfo)
|
||||||
|
if !ok{
|
||||||
|
return ErrUserInfo
|
||||||
|
}
|
||||||
|
|
||||||
|
if !userInfo.Roles.ScriptWrite{
|
||||||
|
return ErrPermissionDenied
|
||||||
|
}
|
||||||
|
|
||||||
|
return svc.DB.Scripts().Delete(ctx, params.ScriptID)
|
||||||
}
|
}
|
||||||
// GetScript implements getScript operation.
|
// GetScript implements getScript operation.
|
||||||
//
|
//
|
||||||
@ -30,7 +64,24 @@ func (svc *Service) DeleteScript(ctx context.Context, params api.DeleteScriptPar
|
|||||||
//
|
//
|
||||||
// GET /scripts/{ScriptID}
|
// GET /scripts/{ScriptID}
|
||||||
func (svc *Service) GetScript(ctx context.Context, params api.GetScriptParams) (*api.Script, error){
|
func (svc *Service) GetScript(ctx context.Context, params api.GetScriptParams) (*api.Script, error){
|
||||||
return nil,nil
|
_, ok := ctx.Value("UserInfo").(*UserInfo)
|
||||||
|
if !ok{
|
||||||
|
return nil, ErrUserInfo
|
||||||
|
}
|
||||||
|
|
||||||
|
// Read permission for scripts only requires you to be logged in
|
||||||
|
|
||||||
|
script, err := svc.DB.Scripts().Get(ctx, params.ScriptID)
|
||||||
|
if err != nil{
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return &api.Script{
|
||||||
|
ID: script.ID,
|
||||||
|
Hash: fmt.Sprintf("%x",script.Hash),
|
||||||
|
Source: script.Source,
|
||||||
|
SubmissionID: script.SubmissionID,
|
||||||
|
}, nil
|
||||||
}
|
}
|
||||||
// UpdateScript implements updateScript operation.
|
// UpdateScript implements updateScript operation.
|
||||||
//
|
//
|
||||||
@ -38,5 +89,23 @@ func (svc *Service) GetScript(ctx context.Context, params api.GetScriptParams) (
|
|||||||
//
|
//
|
||||||
// PATCH /scripts/{ScriptID}
|
// PATCH /scripts/{ScriptID}
|
||||||
func (svc *Service) UpdateScript(ctx context.Context, req *api.ScriptUpdate, params api.UpdateScriptParams) error{
|
func (svc *Service) UpdateScript(ctx context.Context, req *api.ScriptUpdate, params api.UpdateScriptParams) error{
|
||||||
return nil
|
userInfo, ok := ctx.Value("UserInfo").(*UserInfo)
|
||||||
|
if !ok{
|
||||||
|
return ErrUserInfo
|
||||||
|
}
|
||||||
|
|
||||||
|
if !userInfo.Roles.ScriptWrite{
|
||||||
|
return ErrPermissionDenied
|
||||||
|
}
|
||||||
|
|
||||||
|
pmap := datastore.Optional()
|
||||||
|
if source,ok:=req.Source.Get();ok{
|
||||||
|
pmap.Add("source",source)
|
||||||
|
panic("unimplemented")
|
||||||
|
pmap.Add("from_script_hash",0)
|
||||||
|
}
|
||||||
|
if SubmissionID,ok:=req.SubmissionID.Get();ok{
|
||||||
|
pmap.Add("submission_id",SubmissionID)
|
||||||
|
}
|
||||||
|
return svc.DB.Scripts().Update(ctx, req.ID, pmap)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user