diff --git a/Taskfile.yml b/Taskfile.yml index 17e1e0c..6f2562e 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -84,17 +84,3 @@ tasks: - '{{.BIN}}/cool-down' cmds: - go install ./cmd/cool-down - - install-ic-merge: - desc: Installs the ic-merge command - source: - - go.mod - - go.sum - - cmd/ic-merge/**/*.go - - cli/context/*.go - - cli/err/*.go - - infinitecraft/**/*.go - generates: - - '{{.BIN}}/ic-merge' - cmds: - - go install ./cmd/ic-merge diff --git a/cmd/ic-merge/main.go b/cmd/ic-merge/main.go index 63563b2..1be90ef 100644 --- a/cmd/ic-merge/main.go +++ b/cmd/ic-merge/main.go @@ -2,7 +2,7 @@ package main import ( "context" - "fmt" + "encoding/json" "os" c "codeberg.org/danjones000/utils/cli/context" @@ -26,9 +26,9 @@ func main() { g, err := m.Merge(ctx) e.HandleErr(err) - var out string - out, err = m.Write(ctx, g) + jsout := json.NewEncoder(os.Stdout) + jsout.SetIndent("", "\t") + err = jsout.Encode(g) e.HandleErr(err) - - fmt.Printf("Saved to %s\n", out) + // */ } diff --git a/infinitecraft/game.go b/infinitecraft/game.go index 7e55fa5..6a4c729 100644 --- a/infinitecraft/game.go +++ b/infinitecraft/game.go @@ -1,10 +1,10 @@ package infinitecraft type Game struct { - Name string `json:"name"` - Version string `json:"version"` - Created int64 `json:"created"` - Updated int64 `json:"updated"` - Instances []Instance `json:"instances" db:"-"` - Items []Item `json:"items" db:"-"` + Name string `json:"name"` + Version string `json:"version"` + Created uint64 `json:"created"` + Updated uint64 `json:"updated"` + Instances []any `json:"instances" db:"-"` + Items []Item `json:"items" db:"-"` } diff --git a/infinitecraft/instance.go b/infinitecraft/instance.go deleted file mode 100644 index c9cb29e..0000000 --- a/infinitecraft/instance.go +++ /dev/null @@ -1,7 +0,0 @@ -package infinitecraft - -type Instance struct { - ItemID int32 `json:"itemId"` - X uint16 `json:"x"` - Y uint16 `json:"y"` -} diff --git a/infinitecraft/merger.go b/infinitecraft/merger.go index 36d2ef8..dd70295 100644 --- a/infinitecraft/merger.go +++ b/infinitecraft/merger.go @@ -139,11 +139,11 @@ func (m *Merger) getGameDetails(ctx context.Context, g *Game) error { return m.db.GetContext(ctx, g, `SELECT name, version FROM games ORDER BY id ASC LIMIT 1`) } -func (m *Merger) getGameCreated(ctx context.Context, date *int64) error { +func (m *Merger) getGameCreated(ctx context.Context, date *uint64) error { return m.db.GetContext(ctx, date, `SELECT MIN(created) FROM games`) } -func (m *Merger) getGameUpdated(ctx context.Context, date *int64) error { +func (m *Merger) getGameUpdated(ctx context.Context, date *uint64) error { return m.db.GetContext(ctx, date, `SELECT MAX(updated) FROM games`) } @@ -221,6 +221,30 @@ func (m *Merger) Merge(ctx context.Context) (g Game, err error) { return } +type GameItem struct { + Game string `db:"game"` + GameID int64 `db:"game_id"` + Text string `db:"name"` + Emoji string + Id int64 `db:"orig_id"` +} + +func (m *Merger) GameItems(ctx context.Context) (gits []GameItem, err error) { + err = m.db.SelectContext(ctx, &gits, ` + SELECT + g.name AS game, + g.id AS game_id, + it.name, + it.emoji, + it.id - 1 AS orig_id + FROM games_items gi + JOIN items it ON gi.item_id = it.id + JOIN games g ON gi.game_id = g.id + ORDER BY gi.id ASC + `) + return +} + func (m *Merger) insertGames(ctx context.Context) (mp map[int64]Game, err error) { mp = make(map[int64]Game, len(m.games)) var res sql.Result diff --git a/infinitecraft/write.go b/infinitecraft/write.go deleted file mode 100644 index 8f8e91f..0000000 --- a/infinitecraft/write.go +++ /dev/null @@ -1,35 +0,0 @@ -package infinitecraft - -import ( - "compress/gzip" - "context" - "encoding/json" - "fmt" - "os" - "time" -) - -func (m *Merger) Write(ctx context.Context, g Game) (out string, err error) { - base := fmt.Sprintf("%s - %s", time.Now().Local().Format("2006-01-02T15_04_05"), g.Name) - out = base + ".ic" - - var f *os.File - if f, err = os.Create(out); err != nil { - return - } - defer f.Close() - - gz := gzip.NewWriter(f) - defer gz.Close() - gz.Name = base - gz.ModTime = time.Unix(g.Updated/1000, g.Updated%1000) - gz.Comment = "merge by ic-merge" - - if g.Instances == nil { - g.Instances = make([]Instance, 0) - } - - enc := json.NewEncoder(gz) - err = enc.Encode(g) - return -}