Files
sm-bm-plugin/models/reading.go
Jakub Zych 71b848a376 Adopt SummerCMS v0.1.1 admin features
Datepickers on native time.Time / lagoon.Date fields, file uploads on
materials, readings and class sessions managed from the course form
(course_id made nullable).
2026-10-03 06:03:34 +02:00

51 lines
1.4 KiB
Go

// Code generated by summer make. DO NOT EDIT.
package models
import (
"time"
"gorm.io/gorm"
)
// Reading is one lektura on a course's reading list.
type Reading struct {
ID uint `gorm:"column:id;primaryKey"`
CourseID *uint `gorm:"column:course_id"`
Course *Course `gorm:"foreignKey:CourseID"`
Title string `gorm:"column:title"`
Author *string `gorm:"column:author"`
Source *string `gorm:"column:source"`
URL *string `gorm:"column:url"`
IsRequired bool `gorm:"column:is_required"`
SortOrder int `gorm:"column:sort_order"`
CreatedAt time.Time `gorm:"column:created_at"`
UpdatedAt time.Time `gorm:"column:updated_at"`
}
// TableName is the plugin table.
func (Reading) TableName() string { return "jz_bm_readings" }
// Fillable lists the columns mass assignment may set.
func (Reading) Fillable() []string {
return []string{"course_id", "title", "author", "source", "url", "is_required", "sort_order"}
}
// Rules are checked by the admin API on every save.
func (Reading) Rules() map[string]string {
return map[string]string{
"title": "required|max:500",
"author": "nullable|max:255",
"source": "nullable|max:500",
"url": "nullable|max:2048",
"is_required": "boolean",
"sort_order": "nullable|integer",
}
}
// BeforeSave stores NULL for empty optional text.
func (r *Reading) BeforeSave(*gorm.DB) error {
blank(&r.Author, &r.Source, &r.URL)
return nil
}