Files
htwkalender-pwa/backend/service/db/dbFeeds.go
2024-04-02 11:34:47 +02:00

87 lines
2.3 KiB
Go

//Calendar implementation for the HTWK Leipzig timetable. Evaluation and display of the individual dates in iCal format.
//Copyright (C) 2024 HTWKalender support@htwkalender.de
//This program is free software: you can redistribute it and/or modify
//it under the terms of the GNU Affero General Public License as published by
//the Free Software Foundation, either version 3 of the License, or
//(at your option) any later version.
//This program is distributed in the hope that it will be useful,
//but WITHOUT ANY WARRANTY; without even the implied warranty of
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
//GNU Affero General Public License for more details.
//You should have received a copy of the GNU Affero General Public License
//along with this program. If not, see <https://www.gnu.org/licenses/>.
package db
import (
"errors"
"github.com/pocketbase/dbx"
"github.com/pocketbase/pocketbase"
"github.com/pocketbase/pocketbase/daos"
"github.com/pocketbase/pocketbase/models"
"htwkalender/model"
"time"
)
func SaveFeed(feed model.Feed, collection *models.Collection, app *pocketbase.PocketBase) (*models.Record, error) {
record := models.NewRecord(collection)
record.Set("modules", feed.Modules)
err := app.Dao().SaveRecord(record)
if err != nil {
return nil, err
}
return record, nil
}
func FindFeedByToken(token string, app *pocketbase.PocketBase) (*model.Feed, error) {
record, err := app.Dao().FindRecordById("feeds", token)
if err != nil {
return nil, err
}
var feed model.Feed
feed.Modules = record.GetString("modules")
feed.Retrieved = record.GetDateTime("retrieved")
//update retrieved time
record.Set("retrieved", time.Now())
err = app.Dao().SaveRecord(record)
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) {
var feeds []model.Feed
err := db.DB().Select("*").From("feeds").All(&feeds)
if err != nil {
return nil, err
}
return feeds, nil
}