Skip to content

Commit

Permalink
add cmd/current-complex tool
Browse files Browse the repository at this point in the history
  • Loading branch information
thisisaaronland committed Nov 22, 2021
1 parent 32401cb commit c46d3d9
Show file tree
Hide file tree
Showing 4 changed files with 117 additions and 34 deletions.
3 changes: 3 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ cli:
cli-lookup:
go build -mod vendor -o bin/lookup cmd/lookup/main.go

cli-complex:
go build -mod vendor --tags json1 -o bin/current-complex cmd/current-complex/main.go

compile:
@make compile-gates
@make compile-galleries
Expand Down
30 changes: 15 additions & 15 deletions campus/campus.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ type Campus struct {
type Garage struct {
WhosOnFirstId int64 `json:"id"`
SFOId string `json:"sfo:id"`
PublicArt []*PublicArt `json:"publicart"`
PublicArt []*PublicArt `json:"publicart,omitempty"`
}

// type Complex is a lightweight data structure to represent the terminal complex at SFO with pointers its descendants.
Expand All @@ -29,38 +29,38 @@ type Complex struct {
type ObservationDeck struct {
WhosOnFirstId int64 `json:"id"`
SFOId string `json:"sfo:id"`
PublicArt []*PublicArt `json:"publicart"`
Galleries []*Gallery `json:"galleries"`
PublicArt []*PublicArt `json:"publicart,omitempty"`
Galleries []*Gallery `json:"galleries,omitempty"`
}

// type Terminal is a lightweight data structure to represent terminals at SFO with pointers its descendants.
type Terminal struct {
WhosOnFirstId int64 `json:"id"`
SFOId string `json:"sfo:id"`
CommonAreas []*CommonArea `json:"commonareas"`
BoardingAreas []*BoardingArea `json:"boardingareas"`
CommonAreas []*CommonArea `json:"commonareas,omitempty"`
BoardingAreas []*BoardingArea `json:"boardingareas,omitempty"`
}

// type CommonArea is a lightweight data structure to represent common areas at SFO with pointers its descendants.
type CommonArea struct {
WhosOnFirstId int64 `json:"id"`
SFOId string `json:"sfo:id"`
Gates []*Gate `json:"gates"`
Checkpoints []*Checkpoint `json:"checkpoints"`
Galleries []*Gallery `json:"galleries"`
PublicArt []*PublicArt `json:"publicart"`
ObservationDecks []*ObservationDeck `json:"observationdecks"` // for example T2
Gates []*Gate `json:"gates,omitempty"`
Checkpoints []*Checkpoint `json:"checkpoints,omitempty"`
Galleries []*Gallery `json:"galleries,omitempty"`
PublicArt []*PublicArt `json:"publicart,omitempty"`
ObservationDecks []*ObservationDeck `json:"observationdecks,omitempty"` // for example T2
}

// type BoardingArea is a lightweight data structure to represent boarding areas at SFO with pointers its descendants.
type BoardingArea struct {
WhosOnFirstId int64 `json:"id"`
SFOId string `json:"sfo:id"`
Gates []*Gate `json:"gates"`
Checkpoints []*Checkpoint `json:"checkpoints"`
Galleries []*Gallery `json:"galleries"`
PublicArt []*PublicArt `json:"publicart"`
ObservationDecks []*ObservationDeck `json:"observationdecks"`
Gates []*Gate `json:"gates,omitempty"`
Checkpoints []*Checkpoint `json:"checkpoints,omitempty"`
Galleries []*Gallery `json:"galleries,omitempty"`
PublicArt []*PublicArt `json:"publicart,omitempty"`
ObservationDecks []*ObservationDeck `json:"observationdecks,omitempty"`
}

// type Gallery is a lightweight data structure to represent SFO Museum galleries at SFO.
Expand Down
80 changes: 61 additions & 19 deletions campus/current.go
Original file line number Diff line number Diff line change
Expand Up @@ -147,8 +147,14 @@ func findTerminals(ctx context.Context, db *sql.DB, sfo_id int64) ([]*Terminal,
terminal := &Terminal{
WhosOnFirstId: t_id,
SFOId: sfoid,
CommonAreas: commonareas,
BoardingAreas: boardingareas,
}

if len(commonareas) > 0 {
terminal.CommonAreas = commonareas
}

if len(boardingareas) > 0 {
terminal.BoardingAreas = boardingareas
}

terminals[idx] = terminal
Expand Down Expand Up @@ -200,8 +206,14 @@ func findObservationDecks(ctx context.Context, db *sql.DB, t_id int64) ([]*Obser
deck := &ObservationDeck{
WhosOnFirstId: d_id,
SFOId: sfoid,
Galleries: galleries,
PublicArt: publicart,
}

if len(galleries) > 0 {
deck.Galleries = galleries
}

if len(publicart) > 0 {
deck.PublicArt = publicart
}

decks[idx] = deck
Expand Down Expand Up @@ -289,13 +301,28 @@ func findCommonAreas(ctx context.Context, db *sql.DB, t_id int64) ([]*CommonArea
}

area := &CommonArea{
WhosOnFirstId: c_id,
SFOId: sfoid,
Gates: gates,
Checkpoints: checkpoints,
Galleries: galleries,
PublicArt: publicart,
ObservationDecks: observation_decks,
WhosOnFirstId: c_id,
SFOId: sfoid,
}

if len(gates) > 0 {
area.Gates = gates
}

if len(checkpoints) > 0 {
area.Checkpoints = checkpoints
}

if len(galleries) > 0 {
area.Galleries = galleries
}

if len(publicart) > 0 {
area.PublicArt = publicart
}

if len(observation_decks) > 0 {
area.ObservationDecks = observation_decks
}

commonareas[idx] = area
Expand Down Expand Up @@ -340,7 +367,7 @@ func findBoardingAreas(ctx context.Context, db *sql.DB, id int64) ([]*BoardingAr
return nil, err
}

observationdecks, err := findObservationDecks(ctx, db, b_id)
observation_decks, err := findObservationDecks(ctx, db, b_id)

if err != nil {
return nil, err
Expand Down Expand Up @@ -372,13 +399,28 @@ func findBoardingAreas(ctx context.Context, db *sql.DB, id int64) ([]*BoardingAr
}

area := &BoardingArea{
WhosOnFirstId: b_id,
SFOId: sfoid,
Gates: gates,
Checkpoints: checkpoints,
Galleries: galleries,
PublicArt: publicart,
ObservationDecks: observationdecks,
WhosOnFirstId: b_id,
SFOId: sfoid,
}

if len(gates) > 0 {
area.Gates = gates
}

if len(checkpoints) > 0 {
area.Checkpoints = checkpoints
}

if len(galleries) > 0 {
area.Galleries = galleries
}

if len(publicart) > 0 {
area.PublicArt = publicart
}

if len(observation_decks) > 0 {
area.ObservationDecks = observation_decks
}

boardingareas[idx] = area
Expand Down
38 changes: 38 additions & 0 deletions cmd/current-complex/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package main

import (
"context"
"encoding/json"
"flag"
"github.com/sfomuseum/go-sfomuseum-architecture/campus"
"io"
"log"
"os"
)

func main() {

mode := flag.String("mode", "repo://", "...")
flag.Parse()

ctx := context.Background()

writers := make([]io.Writer, 0)
writers = append(writers, os.Stdout)
wr := io.MultiWriter(writers...)

paths := flag.Args()

c, err := campus.MostRecentComplexWithIterator(ctx, *mode, paths...)

if err != nil {
log.Fatalf("Failed to derive most recent complex, %v", err)
}

enc := json.NewEncoder(wr)
err = enc.Encode(c)

if err != nil {
log.Fatalf("Failed to encode complex, %v", err)
}
}

0 comments on commit c46d3d9

Please sign in to comment.