|
|
- package Database
-
- import (
- "git.tovijaeschke.xyz/tovi/SuddenImpactRecords/Models"
-
- "gorm.io/gorm"
- "gorm.io/gorm/clause"
- )
-
- func GetPosts(page, pageSize int) ([]Models.Post, error) {
- var (
- posts []Models.Post
- err error
- )
-
- if page == 0 {
- page = 1
- }
-
- switch {
- case pageSize > 100:
- pageSize = 100
- case pageSize <= 0:
- pageSize = 10
- }
-
- err = DB.Offset(page).
- Limit(pageSize).
- Find(&posts).
- Error
-
- return posts, err
- }
-
- func GetFrontPagePosts() ([]Models.Post, error) {
- var (
- posts []Models.Post
- err error
- )
-
- err = DB.Where("front_page = ?", true).
- Order("order asc").
- Find(&posts).
- Error
-
- return posts, err
- }
-
- func GetPostById(id string) (Models.Post, error) {
- var (
- postData Models.Post
- err error
- )
-
- err = DB.Preload(clause.Associations).
- First(&postData, "id = ?", id).
- Error
-
- return postData, err
- }
-
- func CreatePost(postData *Models.Post) error {
- return DB.Session(&gorm.Session{FullSaveAssociations: true}).
- Create(postData).
- Error
- }
-
- func UpdatePost(id string, postData *Models.Post) (Models.Post, error) {
- var (
- err error
- )
-
- err = DB.Model(&Models.Post{}).
- Select("*").
- Omit("id", "created_at", "updated_at", "deleted_at").
- Where("id = ?", id).
- Updates(postData).
- Error
- if err != nil {
- return Models.Post{}, err
- }
-
- return GetPostById(id)
- }
-
- func DeletePost(postData *Models.Post) error {
- return DB.Session(&gorm.Session{FullSaveAssociations: true}).
- Delete(postData).
- Error
- }
|