/*
# Schema

Flight1GoToGate

Status:
	Flight1OnTime
	Flight1Delayed
	Flight1Departed
	Flight1Arrived
	Flight1Scheduled

Direction:
	Flight1Inbound
	Flight1Outbound

Gates:
	Flight1GateUnknown
	Flight1Gate1
	Flight1Gate2
	Flight1Gate3
*/

package main

import (
	
	
	
	

	
	
)

const (
	flights = 10
	gates   = 5
)

func main() {
	 := context.Background()

	// TODO am.Schema to cli.SFParams converter
	 := cli.SFParams{
		Name:    "Flights",
		Inherit: "rpc/worker,basic",
	}

	for  := 1;  <= flights; ++ {
		 := strconv.Itoa()
		 := "Flight" + 
		.States += ","
		.Groups += ","

		// Status
		.States +=  + "OnTime:remove(_" +  + "Status)," +
			 + "Delayed:remove(_" +  + "Status)," +
			 + "Departed:remove(_" +  + "Status;" +  + "GoToGate)," +
			 + "Arrived:remove(_" +  + "Status)," +
			 + "Scheduled:auto:remove(_" +  + "Status)," +
			// Direction
			 + "Inbound:remove(_" +  + "Direction)," +
			 + "Outbound:remove(_" +  + "Direction)," +
			// Gates
			 + "GoToGate:require(" +  + "Outbound)," +
			 + "GateUnknown:auto,"

		// Direction
		.Groups +=  + "Direction(" +
			 + "Inbound;" +  + "Outbound),"

		// Status
		.Groups +=  + "Status(" +
			 + "OnTime;" +  + "Delayed;" +  + "Departed;" +  + "Arrived;" +  + "Scheduled),"

		// Gates
		.Groups +=  + "Gates("
		for  := 1;  <= gates; ++ {
			 := strconv.Itoa()
			 :=  + "Gate" + 

			.States +=  + ":remove(_" +  + "Gates),"
			.Groups +=  + ";"
		}
		.Groups = strings.TrimRight(.Groups, ";") + "),"
	}

	,  := generator.NewSchemaGenerator(, )
	if  != nil {
		panic()
	}

	// save to ../states/ss_random_data.go
	 := .Output()
	 = os.WriteFile("../states/ss_flights.go", []byte(), 0644)
	if  != nil {
		panic()
	}
}