init push
This commit is contained in:
141
internal/domain/auth/contact_profiles.go
Normal file
141
internal/domain/auth/contact_profiles.go
Normal 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" }
|
||||
Reference in New Issue
Block a user