1
0
Fork 0
mirror of https://github.com/Eggbertx/gochan.git synced 2025-08-02 02:36:24 -07:00
gochan/pkg/gcsql/tables.go

247 lines
7.7 KiB
Go

package gcsql
import (
"html/template"
"time"
)
// table: DBPREFIXannouncements
type Announcement struct {
ID uint `json:"no"` // sql: `id`
StaffID string `json:"name"` // sql: `staff_id`
Subject string `json:"sub"` // sql: `subject`
Message string `json:"com"` // sql: `message`
Timestamp time.Time `json:"-"` // sql: `timestamp`
}
// table: DBPREFIXboard_staff
type BoardStaff struct {
BoardID uint // sql: `board_id`
StaffID uint // sql: `staff_id`
}
// table: DBPREFIXboards
type Board struct {
ID int // sql: `id`
SectionID int // sql: `section_id`
URI string // sql: `uri`
Dir string // sql: `dir`
NavbarPosition int // sql: `navbar_position`
Title string // sql: `title`
Subtitle string // sql: `suttitle`
Description string // sql: `description`
MaxFilesize int // sql: `max_file_size`
MaxThreads int // sql: `max_threads`
DefaultStyle string // sql: `default_style`
Locked bool // sql: `locked`
CreatedAt time.Time // sql: `created_at`
AnonymousName string // sql: `anonymous_name`
ForceAnonymous bool // sql: `force_anonymous`
AutosageAfter int // sql: `autosage_after`
NoImagesAfter int // sql: `no_images_after`
MaxMessageLength int // sql: `max_message_length`
MinMessageLength int // sql: `min_message_length`
AllowEmbeds bool // sql: `allow_embeds`
RedirectToThread bool // sql: `redirect_to_thread`
RequireFile bool // sql: `require_file`
EnableCatalog bool // sql: `enable_catalog`
}
// FileBan contains the information associated with a specific file ban.
// table: DBPREFIXfile_ban
type FileBan struct {
ID int // sql: `id`
BoardID *int // sql: `board_id`
StaffID int // sql: `staff_id`
StaffNote string // sql: `staff_note`
IssuedAt time.Time // sql: `issued_at`
Checksum string // sql: `checksum`
}
type filenameOrUsernameBanBase struct {
ID int // sql: id
BoardID *int // sql: board_id
StaffID int // sql: staff_id
StaffNote string // sql: staff_note
IssuedAt time.Time // sql: issued_at
check string // replaced with username or filename
IsRegex bool // sql: is_regex
}
// FilenameBan represents a ban on a specific filename or filename regular expression.
// table: DBPREFIXfilename_ban
type FilenameBan struct {
filenameOrUsernameBanBase
Filename string // sql: `filename`
IsRegex bool // sql: `is_regex`
}
// Upload represents a file attached to a post.
// table: DBPREFIXfiles
type Upload struct {
ID int // sql: `id`
PostID int // sql: `post_id`
FileOrder int // sql: `file_order`
OriginalFilename string // sql: `original_filename`
Filename string // sql: `filename`
Checksum string // sql: `checksum`
FileSize int // sql: `file_size`
IsSpoilered bool // sql: `is_spoilered`
ThumbnailWidth int // sql: `thumbnail_width`
ThumbnailHeight int // sql: `thumbnail_height`
Width int // sql: `width`
Height int // sql: `height`
}
// used to composition IPBan and IPBanAudit
type ipBanBase struct {
IsActive bool
IsThreadBan bool
ExpiresAt time.Time
StaffID int
AppealAt time.Time
Permanent bool
StaffNote string
Message string
CanAppeal bool
}
// IPBan contains the information association with a specific ip ban.
// table: DBPREFIXip_ban
type IPBan struct {
ID int
BoardID *int
BannedForPostID *int
CopyPostText template.HTML
IP string
IssuedAt time.Time
ipBanBase
}
// table: DBPREFIXip_ban_audit
type IPBanAudit struct {
IPBanID int // sql: `ip_ban_id`
Timestamp time.Time // sql: `timestamp`
ipBanBase
}
// used to composition IPBanAppeal and IPBanAppealAudit
type ipBanAppealBase struct {
StaffID int // sql: `staff_id`
AppealText string // sql: `appeal_text`
StaffResponse string // sql: `staff_response`
IsDenied bool // sql: `is_denied`
}
// table: DBPREFIXip_ban_appeals
type IPBanAppeal struct {
ID int // sql: `id`
IPBanID int // sql: `ip_ban_id`
ipBanAppealBase
}
// table: DBPREFIXip_ban_appeals_audit
type IPBanAppealAudit struct {
AppealID int // sql: `appeal_id`
Timestamp time.Time // sql: `timestamp`
ipBanAppealBase
}
// table: DBPREFIXposts
type Post struct {
ID int // sql: `id`
ThreadID int // sql: `thread_id`
IsTopPost bool // sql: `is_top_post`
IP string // sql: `ip`
CreatedOn time.Time // sql: `created_on`
Name string // sql: `name`
Tripcode string // sql: `tripcode`
IsRoleSignature bool // sql: `is_role_signature`
Email string // sql: `email`
Subject string // sql: `subject`
Message template.HTML // sql: `message`
MessageRaw string // sql: `message_raw`
Password string `json:"-"` // sql: `password`
DeletedAt time.Time // sql: `deleted_at`
IsDeleted bool // sql: `is_deleted`
BannedMessage string // sql: `banned_message`
sanitized bool
}
// table: DBPREFIXreports
type Report struct {
ID int // sql: `id`
HandledByStaffID int // sql: `handled_by_staff_id`
PostID int // sql: `post_id`
IP string // sql: `ip`
Reason string // sql: `reason`
IsCleared bool // sql: `is_cleared`
}
// table: DBPREFIXreports_audit
type ReportAudit struct {
Report int // sql: `report_id`
Timestamp time.Time // sql: `timestamp`
HandledByStaffID int // sql: `handled_by_staff_id`
IsCleared bool // sql: `is_cleared`
}
// table: DBPREFIXsections
type Section struct {
ID int // sql: `id`
Name string // sql: `name`
Abbreviation string // sql: `abbreviation`
Position int // sql: `position`
Hidden bool // sql: `hidden`
}
// table: DBPREFIXsessions
type LoginSession struct {
ID int // sql: `id`
StaffID int // sql: `staff_id`
Expires time.Time // sql: `expires`
Data string // sql: `data`
}
// DBPREFIXstaff
type Staff struct {
ID int // sql: `id`
Username string // sql: `username`
PasswordChecksum string `json:"-"` // sql: `password_checksum`
Rank int // sql: `global_rank`
AddedOn time.Time `json:"-"` // sql: `added_on`
LastLogin time.Time `json:"-"` // sql: `last_login`
IsActive bool `json:"-"` // sql: `is_active`
}
// table: DBPREFIXthreads
type Thread struct {
ID int // sql: `id`
BoardID int // sql: `board_id`
Locked bool // sql: `locked`
Stickied bool // sql: `stickied`
Anchored bool // sql: `anchored`
Cyclical bool // sql: `cyclical`
LastBump time.Time // sql: `last_bump`
DeletedAt time.Time // sql: `deleted_at`
IsDeleted bool // sql: `is_deleted`
}
// table: DBPREFIXusername_ban
type UsernameBan struct {
filenameOrUsernameBanBase
Username string // sql: `username`
}
// table DBPREFIXwordfilters
type Wordfilter struct {
ID int `json:"id"` // sql: `id`
BoardDirs *string `json:"boards"` // sql: `board_dirs`
StaffID int `json:"staff_id"` // sql: `staff_id`
StaffNote string `json:"staff_note"` // sql: `staff_note`
IssuedAt time.Time `json:"issued_at"` // sql: `issued_at`
Search string `json:"search"` // sql: `search`
IsRegex bool `json:"is_regex"` // sql: `is_regex`
ChangeTo string `json:"change_to"` // sql: `change_to`
}