connector impl
This commit is contained in:
@@ -110,6 +110,14 @@ func GenerateTurn(configure func(*Param)) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
func LoadReport(configure func(*Param), actor string, turn uint) (*report.Report, error) {
|
||||
ec, err := NewRepoController(configure)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return ec.loadReport(actor, turn)
|
||||
}
|
||||
|
||||
func ExecuteCommand(configure func(*Param), consumer func(c Ctrl) error) (err error) {
|
||||
ec, err := NewRepoController(configure)
|
||||
if err != nil {
|
||||
@@ -197,6 +205,18 @@ func (ec *RepoController) validateOrder(actor string, cmd ...order.DecodableComm
|
||||
})
|
||||
}
|
||||
|
||||
func (ec *RepoController) loadReport(actor string, turn uint) (r *report.Report, err error) {
|
||||
execErr := ec.executeSafe(func(t uint, c *Controller) (exErr error) {
|
||||
id, exErr := c.RaceID(actor)
|
||||
if exErr == nil {
|
||||
r, exErr = ec.Repo.LoadReport(turn, id)
|
||||
}
|
||||
return
|
||||
})
|
||||
err = errors.Join(err, execErr)
|
||||
return
|
||||
}
|
||||
|
||||
func (ec *RepoController) executeCommand(consumer func(*Controller) error) (err error) {
|
||||
return ec.executeLocked(func(c *Controller) error {
|
||||
err = consumer(c)
|
||||
|
||||
@@ -29,6 +29,12 @@ func newGameOnMap(r Repo, races []string, m generator.Map) (uuid.UUID, error) {
|
||||
if err := r.SaveNewTurn(0, g); err != nil {
|
||||
return uuid.Nil, err
|
||||
}
|
||||
c := NewCache(g)
|
||||
for rep := range c.Report(c.g.Turn, nil, nil) {
|
||||
if err := r.SaveReport(c.g.Turn, rep); err != nil {
|
||||
return uuid.Nil, err
|
||||
}
|
||||
}
|
||||
return g.ID, nil
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user