feat:#94 added delete api and tests

This commit is contained in:
masterElmar
2023-12-03 18:29:23 +01:00
parent 78f84a140f
commit c871eb469c
5 changed files with 100 additions and 0 deletions

View File

@@ -1,6 +1,7 @@
package service package service
import ( import (
"htwkalender/service/db"
"htwkalender/service/events" "htwkalender/service/events"
v1 "htwkalender/service/fetch/v1" v1 "htwkalender/service/fetch/v1"
v2 "htwkalender/service/fetch/v2" v2 "htwkalender/service/fetch/v2"
@@ -170,6 +171,29 @@ func AddRoutes(app *pocketbase.PocketBase) {
return nil return nil
}) })
app.OnBeforeServe().Add(func(e *core.ServeEvent) error {
_, err := e.Router.AddRoute(echo.Route{
Method: http.MethodDelete,
Path: "/api/feed",
Handler: func(c echo.Context) error {
token := c.QueryParam("token")
err := db.DeleteFeed(app.Dao(), token)
if err != nil {
return c.JSON(http.StatusInternalServerError, err)
} else {
return c.JSON(http.StatusOK, "Feed deleted")
}
},
Middlewares: []echo.MiddlewareFunc{
apis.ActivityLogger(app),
},
})
if err != nil {
return err
}
return nil
})
app.OnBeforeServe().Add(func(e *core.ServeEvent) error { app.OnBeforeServe().Add(func(e *core.ServeEvent) error {
_, err := e.Router.AddRoute(echo.Route{ _, err := e.Router.AddRoute(echo.Route{
Method: http.MethodGet, Method: http.MethodGet,

View File

@@ -1,6 +1,8 @@
package db package db
import ( import (
"errors"
"github.com/pocketbase/dbx"
"github.com/pocketbase/pocketbase" "github.com/pocketbase/pocketbase"
"github.com/pocketbase/pocketbase/daos" "github.com/pocketbase/pocketbase/daos"
"github.com/pocketbase/pocketbase/models" "github.com/pocketbase/pocketbase/models"
@@ -39,6 +41,25 @@ func FindFeedByToken(token string, app *pocketbase.PocketBase) (*model.Feed, err
return &feed, err return &feed, err
} }
func DeleteFeed(db *daos.Dao, feedId string) error {
sqlResult, err := db.DB().Delete("feeds", dbx.NewExp("id = {:id}", dbx.Params{"id": feedId})).Execute()
var deletedRows int64
if sqlResult != nil {
deletedRows, _ = sqlResult.RowsAffected()
}
if err != nil {
return err
} else {
if deletedRows == 0 {
return errors.New("No feed with id " + feedId + " found")
} else {
return nil
}
}
}
func GetAllFeeds(db *daos.Dao) ([]model.Feed, error) { func GetAllFeeds(db *daos.Dao) ([]model.Feed, error) {
var feeds []model.Feed var feeds []model.Feed
err := db.DB().Select("*").From("feeds").All(&feeds) err := db.DB().Select("*").From("feeds").All(&feeds)

View File

@@ -0,0 +1,55 @@
package db
import (
"github.com/pocketbase/pocketbase/daos"
"github.com/pocketbase/pocketbase/tests"
"testing"
)
const testDataDir = "./mockData"
func TestDeleteFeed(t *testing.T) {
setupTestApp := func(t *testing.T) *daos.Dao {
testApp, err := tests.NewTestApp(testDataDir)
if err != nil {
t.Fatal(err)
}
dao := daos.New(testApp.Dao().DB())
return dao
}
type args struct {
db *daos.Dao
feedId string
}
testsCases := []struct {
name string
args args
wantErr bool
}{
{
name: "TestDeleteFeed",
args: args{
db: setupTestApp(t),
feedId: "fkoqti06ohlnsb8",
},
wantErr: false,
},
{
name: "TestDeleteFeedNotExisting",
args: args{
db: setupTestApp(t),
feedId: "test324",
},
wantErr: true,
},
}
for _, tt := range testsCases {
t.Run(tt.name, func(t *testing.T) {
if err := DeleteFeed(tt.args.db, tt.args.feedId); (err != nil) != tt.wantErr {
t.Errorf("DeleteFeed() error = %v, wantErr %v", err, tt.wantErr)
}
})
}
}

Binary file not shown.

Binary file not shown.