diff --git a/flightRouter.go b/flightRouter.go new file mode 100644 index 0000000..0e47cf8 --- /dev/null +++ b/flightRouter.go @@ -0,0 +1,12 @@ +package main + +import ( + "github.com/gin-gonic/gin" + "net/http" +) + +func RegisterFlightRoutes(router *gin.Engine) { + router.GET("/flights", func(c *gin.Context) { + c.Status(http.StatusOK) + }) +} diff --git a/types.go b/types.go new file mode 100644 index 0000000..f81bbfe --- /dev/null +++ b/types.go @@ -0,0 +1,60 @@ +package main + +import ( + "gorm.io/gorm" + "time" +) + +type AirportModel struct { + Icao string `json:"icao" gorm:"primary_key"` + Name string `json:"name" ` + Country string `json:"country"` + RunwayLength int16 `json:"runway-length"` + DateOptions +} + +type PlaneModel struct { + TailNo string `json:"tail-no" gorm:"primary_key"` + Model string `json:"model"` + Manufacturer string `json:"manufacturer"` + Capacity int16 `json:"capacity"` + DateOptions +} + +type FlightModel struct { + FlightNo string `json:"flight-no" gorm:"primary_key"` + Departure time.Time `json:"departure"` + Arrival *time.Time `json:"arrival"` + ArrivalAirportID string `json:"arrival-airport-id"` + ArrivalAirport AirportModel `gorm:"foreignKey:ArrivalAirportID;references:Icao"` + DepartureAirportID string `json:"departure-airport-id"` + DepartureAirport AirportModel `gorm:"foreignKey:DepartureAirportID;references:Icao"` + OperatesTailNo string `json:"operates-tail-no"` + Operates PlaneModel `gorm:"foreignKey:OperatesTailNo;references:TailNo"` + + DateOptions +} + +type PassengerModel struct { + Ssn string `json:"ssn" gorm:"primary_key"` + Name string `json:"name" ` + DateOfBirth time.Time `json:"date-of-birth"` + isFemale *bool `json:"is-female"` + DateOptions +} + +type ReservationModel struct { + TicketNumber int + Seat string + FlightID string + Flight FlightModel `gorm:"foreignKey:FlightID;references:FlightNo"` + PassengerID string + Passenger PassengerModel `gorm:"foreignKey:PassengerID;references:Ssn"` + DateOptions +} + +type DateOptions struct { + CreatedAt time.Time + UpdatedAt time.Time + DeletedAt gorm.DeletedAt `gorm:"index"` +}