Add migration scripts, activity handler, and registry components for equipment, materials, and people

This commit is contained in:
2026-05-17 10:11:56 -04:00
parent fb67c76f45
commit 17e05cb61d
28 changed files with 3777 additions and 34 deletions
+44 -5
View File
@@ -101,11 +101,12 @@ type AccountingCode struct {
// ── Resource Registry ─────────────────────────────────────────────────────────
type RegistryPerson struct {
ID int `db:"id" json:"id"`
Name string `db:"name" json:"name"`
Role string `db:"role" json:"role"`
Email string `db:"email" json:"email"`
Phone string `db:"phone" json:"phone"`
ID int `db:"id" json:"id"`
Name string `db:"name" json:"name"`
Role string `db:"role" json:"role"`
Email string `db:"email" json:"email"`
Phone string `db:"phone" json:"phone"`
Active bool `db:"active" json:"active"`
}
type RegistryVehicle struct {
@@ -113,6 +114,7 @@ type RegistryVehicle struct {
UnitNumber string `db:"unit_number" json:"unit_number"`
Description string `db:"description" json:"description"`
VehicleType string `db:"vehicle_type" json:"vehicle_type"`
Active bool `db:"active" json:"active"`
}
type RegistryEquipment struct {
@@ -120,6 +122,7 @@ type RegistryEquipment struct {
Name string `db:"name" json:"name"`
AssetTag string `db:"asset_tag" json:"asset_tag"`
Category string `db:"category" json:"category"`
Active bool `db:"active" json:"active"`
}
type RegistryMaterial struct {
@@ -127,6 +130,42 @@ type RegistryMaterial struct {
Name string `db:"name" json:"name"`
Unit string `db:"unit" json:"unit"`
PartNumber string `db:"part_number" json:"part_number"`
Active bool `db:"active" json:"active"`
}
type AuditEntry struct {
ID int `db:"id" json:"id"`
Action string `db:"action" json:"action"`
OldValue string `db:"old_value" json:"old_value"`
NewValue string `db:"new_value" json:"new_value"`
PerformedBy string `db:"performed_by" json:"performed_by"`
PerformedAt time.Time `db:"performed_at" json:"performed_at"`
}
// ── Work Order Profiles ───────────────────────────────────────────────────────
type Profile struct {
ID int `db:"id" json:"id"`
Name string `db:"name" json:"name"`
Description string `db:"description" json:"description"`
Category string `db:"category" json:"category"`
DefaultPriority string `db:"default_priority" json:"default_priority"`
DefaultDurationHours *int `db:"default_duration_hours" json:"default_duration_hours"`
DefaultInstructions string `db:"default_instructions" json:"default_instructions"`
Active bool `db:"active" json:"active"`
StepCount int `db:"step_count" json:"step_count"`
CreatedAt time.Time `db:"created_at" json:"created_at"`
UpdatedAt time.Time `db:"updated_at" json:"updated_at"`
Steps []ProfileStep `db:"-" json:"steps,omitempty"`
}
type ProfileStep struct {
ID int `db:"id" json:"id"`
ProfileID int `db:"profile_id" json:"profile_id"`
StepOrder int `db:"step_order" json:"step_order"`
Title string `db:"title" json:"title"`
Description string `db:"description" json:"description"`
Required bool `db:"required" json:"required"`
}
// ── Users & Auth ──────────────────────────────────────────────────────────────