mirror of
https://gitlab.dit.htwk-leipzig.de/htwk-software/htwkalender.git
synced 2025-08-02 17:59:14 +02:00
feat:#94 added delete api and tests
This commit is contained in:
@@ -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,
|
||||||
|
@@ -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)
|
||||||
|
55
backend/service/db/dbFeeds_test.go
Normal file
55
backend/service/db/dbFeeds_test.go
Normal 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)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
BIN
backend/service/db/mockData/data.db
Normal file
BIN
backend/service/db/mockData/data.db
Normal file
Binary file not shown.
BIN
backend/service/db/mockData/logs.db
Normal file
BIN
backend/service/db/mockData/logs.db
Normal file
Binary file not shown.
Reference in New Issue
Block a user