package database
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/google/uuid"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
const (
|
|
SubjectProgramming = "Programming"
|
|
SubjectPentesting = "Pentesting"
|
|
)
|
|
|
|
// Base contains common columns for all tables
|
|
type Base struct {
|
|
ID uuid.UUID `gorm:"primaryKey;autoIncrement:false"`
|
|
CreatedAt time.Time
|
|
UpdatedAt time.Time
|
|
DeletedAt time.Time
|
|
}
|
|
|
|
// BeforeCreate will set Base struct before every insert
|
|
func (base *Base) BeforeCreate(tx *gorm.DB) error {
|
|
// uuid.New() creates a new random UUID or panics.
|
|
base.ID = uuid.New()
|
|
|
|
// generate timestamps
|
|
var t time.Time = time.Now()
|
|
base.CreatedAt, base.UpdatedAt = t, t
|
|
|
|
return nil
|
|
}
|
|
|
|
// AfterUpdate will update the Base struct after every update
|
|
func (base *Base) AfterUpdate(tx *gorm.DB) error {
|
|
// update timestamps
|
|
base.UpdatedAt = time.Now()
|
|
return nil
|
|
}
|
|
|
|
type Post struct {
|
|
Base
|
|
Title string `gorm:"type:varchar(256);"`
|
|
Intro string
|
|
HtmlPath string `gorm:"type:varchar(256);uniqueindex;"`
|
|
Subject string `gorm:"type:varchar(256);"`
|
|
MainImage string `gorm:"type:varchar(256);"`
|
|
|
|
Body string `sql:"-"`
|
|
}
|
|
|
|
type SidebarLink struct {
|
|
Base
|
|
Name string
|
|
Link string
|
|
}
|