Files
sm-bm-plugin/models/meeting.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

53 lines
1.6 KiB
Go

// Code generated by summer make. DO NOT EDIT.
package models
import (
"time"
"git.golem15.com/golem15/summercms/modules/lagoon"
"gorm.io/gorm"
)
// Meeting is one zjazd: a weekend of classes of the part-time programme.
type Meeting struct {
ID uint `gorm:"column:id;primaryKey"`
Number int `gorm:"column:number"`
StartsOn lagoon.Date `gorm:"column:starts_on"`
EndsOn lagoon.Date `gorm:"column:ends_on"`
Notes *string `gorm:"column:notes"`
CreatedAt time.Time `gorm:"column:created_at"`
UpdatedAt time.Time `gorm:"column:updated_at"`
}
// TableName is the plugin table.
func (Meeting) TableName() string { return "jz_bm_meetings" }
// Fillable lists the columns mass assignment may set.
func (Meeting) Fillable() []string { return []string{"number", "starts_on", "ends_on", "notes"} }
// Rules are checked by the admin API on every save.
func (Meeting) Rules() map[string]string {
return map[string]string{
"number": "required|integer|min:1|unique:jz_bm_meetings",
"starts_on": "required",
"ends_on": "required",
}
}
// TemporalErrors checks the order of the dates, which lagoon.Validate
// cannot. The required rules cover missing dates.
func (m *Meeting) TemporalErrors() map[string][]string {
e := temporalErrors{}
if !m.StartsOn.IsZero() && !m.EndsOn.IsZero() && m.EndsOn.Time(nil).Before(m.StartsOn.Time(nil)) {
e.add("ends_on", "The ends on must be a date after or equal to starts on.")
}
return e.result()
}
// BeforeSave stores NULL for empty optional text.
func (m *Meeting) BeforeSave(*gorm.DB) error {
blank(&m.Notes)
return nil
}