init push

This commit is contained in:
2026-07-16 22:16:45 +07:00
commit 8b068bdb10
1021 changed files with 332816 additions and 0 deletions

View File

@@ -0,0 +1,141 @@
package auth
import "time"
// PilotProfile stores role-specific data for role=pilot.
type PilotProfile struct {
UserID []byte `gorm:"type:binary(16);primaryKey;column:user_id"`
PilotCategory string `gorm:"type:varchar(16);not null;index;column:pilot_category"`
ShortName string `gorm:"type:varchar(120);column:short_name"`
LicenseNo string `gorm:"type:varchar(120);index;column:license_no"`
LicenseIssuedAt *time.Time `gorm:"column:license_issued_at"`
LicenseExpiredAt *time.Time `gorm:"column:license_expired_at"`
TechnicianLicenseNo string `gorm:"type:varchar(120);column:technician_license_no"`
HasIFRQualification bool `gorm:"not null;default:false;column:has_ifr_qualification"`
IsChiefPilot bool `gorm:"not null;default:false;column:is_chief_pilot"`
IsDUL bool `gorm:"not null;default:false;column:is_dul"`
TotalFlightMinutes int `gorm:"not null;default:0;column:total_flight_minutes"`
ResponsiblePilotMinutes int `gorm:"not null;default:0;column:responsible_pilot_minutes"`
SecondPilotMinutes int `gorm:"not null;default:0;column:second_pilot_minutes"`
DoubleCommandMinutes int `gorm:"not null;default:0;column:double_command_minutes"`
FlightInstructorMinutes int `gorm:"not null;default:0;column:flight_instructor_minutes"`
NightFlightMinutes int `gorm:"not null;default:0;column:night_flight_minutes"`
IFRFlightMinutes int `gorm:"not null;default:0;column:ifr_flight_minutes"`
Location string `gorm:"type:varchar(255);column:location"`
Postcode string `gorm:"type:varchar(32);column:postcode"`
StreetLine string `gorm:"type:varchar(255);column:street_line"`
Note string `gorm:"type:text;column:note"`
WeightKG *float64 `gorm:"type:decimal(8,2);column:weight_kg"`
PhotoFileID string `gorm:"type:varchar(255);column:photo_file_id"`
CreatedAt time.Time
CreatedBy []byte `gorm:"type:binary(16);column:created_by"`
UpdatedAt time.Time
UpdatedBy []byte `gorm:"type:binary(16);column:updated_by"`
User User `gorm:"foreignKey:UserID;references:ID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE"`
}
func (PilotProfile) TableName() string { return "pilot_profiles" }
// DoctorProfile stores role-specific data for role=doctor.
type DoctorProfile struct {
UserID []byte `gorm:"type:binary(16);primaryKey;column:user_id"`
ShortName string `gorm:"type:varchar(120);column:short_name"`
Specialization string `gorm:"type:varchar(120);column:specialization"`
SubSpecialization string `gorm:"type:varchar(120);column:sub_specialization"`
IsChiefPhysician bool `gorm:"not null;default:false;column:is_chief_physician"`
Location string `gorm:"type:varchar(255);column:location"`
Postcode string `gorm:"type:varchar(32);column:postcode"`
StreetLine string `gorm:"type:varchar(255);column:street_line"`
Note string `gorm:"type:text;column:note"`
PhotoFileID string `gorm:"type:varchar(255);column:photo_file_id"`
CreatedAt time.Time
CreatedBy []byte `gorm:"type:binary(16);column:created_by"`
UpdatedAt time.Time
UpdatedBy []byte `gorm:"type:binary(16);column:updated_by"`
User User `gorm:"foreignKey:UserID;references:ID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE"`
}
func (DoctorProfile) TableName() string { return "doctor_profiles" }
// AirRescuerProfile stores role-specific data for role=air_rescuer.
type AirRescuerProfile struct {
UserID []byte `gorm:"type:binary(16);primaryKey;column:user_id"`
ShortName string `gorm:"type:varchar(120);column:short_name"`
ResponsibleFlightRescuer bool `gorm:"not null;default:false;column:responsible_flight_rescuer"`
Location string `gorm:"type:varchar(255);column:location"`
Postcode string `gorm:"type:varchar(32);column:postcode"`
StreetLine string `gorm:"type:varchar(255);column:street_line"`
Note string `gorm:"type:text;column:note"`
PhotoFileID string `gorm:"type:varchar(255);column:photo_file_id"`
CreatedAt time.Time
CreatedBy []byte `gorm:"type:binary(16);column:created_by"`
UpdatedAt time.Time
UpdatedBy []byte `gorm:"type:binary(16);column:updated_by"`
User User `gorm:"foreignKey:UserID;references:ID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE"`
}
func (AirRescuerProfile) TableName() string { return "air_rescuer_profiles" }
// TechnicianProfile stores role-specific data for role=technician.
type TechnicianProfile struct {
UserID []byte `gorm:"type:binary(16);primaryKey;column:user_id"`
ShortName string `gorm:"type:varchar(120);column:short_name"`
LicenseNo string `gorm:"type:varchar(120);index;column:license_no"`
IsChiefTechnician bool `gorm:"not null;default:false;column:is_chief_technician"`
IsResponsibleComplaints bool `gorm:"not null;default:false;column:is_responsible_complaints"`
Location string `gorm:"type:varchar(255);column:location"`
Postcode string `gorm:"type:varchar(32);column:postcode"`
StreetLine string `gorm:"type:varchar(255);column:street_line"`
Note string `gorm:"type:text;column:note"`
PhotoFileID string `gorm:"type:varchar(255);column:photo_file_id"`
CreatedAt time.Time
CreatedBy []byte `gorm:"type:binary(16);column:created_by"`
UpdatedAt time.Time
UpdatedBy []byte `gorm:"type:binary(16);column:updated_by"`
User User `gorm:"foreignKey:UserID;references:ID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE"`
}
func (TechnicianProfile) TableName() string { return "technician_profiles" }
// FlightAssistantProfile stores role-specific data for role=flight_assistant.
type FlightAssistantProfile struct {
UserID []byte `gorm:"type:binary(16);primaryKey;column:user_id"`
ShortName string `gorm:"type:varchar(120);column:short_name"`
Location string `gorm:"type:varchar(255);column:location"`
Postcode string `gorm:"type:varchar(32);column:postcode"`
StreetLine string `gorm:"type:varchar(255);column:street_line"`
Note string `gorm:"type:text;column:note"`
PhotoFileID string `gorm:"type:varchar(255);column:photo_file_id"`
CreatedAt time.Time
CreatedBy []byte `gorm:"type:binary(16);column:created_by"`
UpdatedAt time.Time
UpdatedBy []byte `gorm:"type:binary(16);column:updated_by"`
User User `gorm:"foreignKey:UserID;references:ID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE"`
}
func (FlightAssistantProfile) TableName() string { return "flight_assistant_profiles" }
// StaffProfile stores role-specific data for role=staff.
type StaffProfile struct {
UserID []byte `gorm:"type:binary(16);primaryKey;column:user_id"`
ShortName string `gorm:"type:varchar(120);column:short_name"`
RoleLabel string `gorm:"type:varchar(120);column:role_label"`
Location string `gorm:"type:varchar(255);column:location"`
Postcode string `gorm:"type:varchar(32);column:postcode"`
StreetLine string `gorm:"type:varchar(255);column:street_line"`
Note string `gorm:"type:text;column:note"`
PhotoFileID string `gorm:"type:varchar(255);column:photo_file_id"`
CreatedAt time.Time
CreatedBy []byte `gorm:"type:binary(16);column:created_by"`
UpdatedAt time.Time
UpdatedBy []byte `gorm:"type:binary(16);column:updated_by"`
User User `gorm:"foreignKey:UserID;references:ID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE"`
}
func (StaffProfile) TableName() string { return "staff_profiles" }