package models import ( "time" ) type Room struct { ID int `json:"id" db:"id"` Name string `json:"name" db:"name"` Capacity int `json:"capacity" db:"capacity"` Color string `json:"color" db:"color"` CreatedAt time.Time `json:"created_at" db:"created_at"` } type Table struct { ID int `json:"id" db:"id"` RoomID int `json:"room_id" db:"room_id"` X int `json:"x" db:"x"` Y int `json:"y" db:"y"` Width int `json:"width" db:"width"` Height int `json:"height" db:"height"` MaxGuests int `json:"max_guests" db:"max_guests"` Shape string `json:"shape" db:"shape"` Status string `json:"status" db:"status"` CreatedAt time.Time `json:"created_at" db:"created_at"` RoomName string `json:"room_name,omitempty" db:"-"` } type Reservation struct { ID int `json:"id" db:"id"` TableID int `json:"table_id" db:"table_id"` Date string `json:"date" db:"date"` TimeFrom string `json:"time_from" db:"time_from"` TimeTo string `json:"time_to" db:"time_to"` Guests int `json:"guests" db:"guests"` Name string `json:"name" db:"name"` Phone string `json:"phone" db:"phone"` Email string `json:"email" db:"email"` Source string `json:"source" db:"source"` Notes string `json:"notes" db:"notes"` CreatedAt time.Time `json:"created_at" db:"created_at"` TableName string `json:"table_name,omitempty" db:"-"` } // NEW: RoomBooking for entire room reservations type RoomBooking struct { ID int `json:"id" db:"id"` RoomID int `json:"room_id" db:"room_id"` Date string `json:"date" db:"date"` TimeFrom string `json:"time_from" db:"time_from"` TimeTo string `json:"time_to" db:"time_to"` Guests int `json:"guests" db:"guests"` Name string `json:"name" db:"name"` Phone string `json:"phone" db:"phone"` Email string `json:"email" db:"email"` EventType string `json:"event_type" db:"event_type"` Notes string `json:"notes" db:"notes"` Status string `json:"status" db:"status"` // confirmed, cancelled, pending CreatedAt time.Time `json:"created_at" db:"created_at"` RoomName string `json:"room_name,omitempty" db:"-"` } type TableMerge struct { ID int `json:"id" db:"id"` ParentTableID int `json:"parent_table_id" db:"parent_table_id"` ChildTableID int `json:"child_table_id" db:"child_table_id"` MergedName string `json:"merged_name" db:"merged_name"` Active bool `json:"active" db:"active"` CreatedAt time.Time `json:"created_at" db:"created_at"` } type EmailConfig struct { ID int `json:"id" db:"id"` Host string `json:"host" db:"host"` Port int `json:"port" db:"port"` Username string `json:"user" db:"user"` Password string `json:"password" db:"password"` SSL bool `json:"ssl" db:"ssl"` Folder string `json:"folder" db:"folder"` } type User struct { ID int `json:"id" db:"id"` Username string `json:"username" db:"username"` Password string `json:"password" db:"password"` IsAdmin bool `json:"is_admin" db:"is_admin"` } type Availability struct { TableID int `json:"table_id"` Date string `json:"date"` TimeFrom string `json:"time_from"` TimeTo string `json:"time_to"` Status string `json:"status"` } // NEW: RoomAvailability for checking room availability type RoomAvailability struct { RoomID int `json:"room_id"` Date string `json:"date"` TimeFrom string `json:"time_from"` TimeTo string `json:"time_to"` Status string `json:"status"` }