Changes
4 changed files (+115/-1)
-
-
@@ -24,6 +24,7 @@func New(db *sql.DB, logger *slog.Logger) (*Core, error) { err := migrations.Run(db, logger, []migrations.Migration{ migrations.Migration001{}, migrations.Migration002{}, }) if err != nil { return nil, err
-
-
-
@@ -68,11 +68,13 @@ }p.hasSnapshot = false switch ev.Event.(type) { switch v := ev.Event.(type) { case *workspaceEventsv1.Event_AdminAccessGranted: p.Projection.NumberOfAdmins = proto.Uint32(*p.Projection.NumberOfAdmins + 1) case *workspaceEventsv1.Event_AdminAccessRevoked: p.Projection.NumberOfAdmins = proto.Uint32(max(0, *p.Projection.NumberOfAdmins-1)) case *workspaceEventsv1.Event_WorkspaceDisplayNameSet: p.Projection.DisplayName = v.WorkspaceDisplayNameSet.DisplayName } p.eventSeq = &events[i].Seq
-
-
-
@@ -0,0 +1,70 @@// SPDX-FileCopyrightText: 2025 Shota FUJI <pockawoooh@gmail.com> // SPDX-License-Identifier: AGPL-3.0-only package projection_test import ( "database/sql" "io" "log/slog" "testing" "google.golang.org/protobuf/proto" eventV1 "pocka.jp/x/yamori/proto/go/backend/events/v1" workspaceV1 "pocka.jp/x/yamori/proto/go/backend/events/workspace/v1" "pocka.jp/x/yamori/backend/core" "pocka.jp/x/yamori/backend/core/event" "pocka.jp/x/yamori/backend/core/projection" _ "modernc.org/sqlite" ) func TestSetDisplayName(t *testing.T) { logger := slog.New(slog.NewTextHandler(io.Discard, nil)) db, err := sql.Open("sqlite", ":memory:") if err != nil { t.Fatal(err) } core, err := core.New(db, logger) if err != nil { t.Fatal(err) } tx, err := core.DB.Begin() if err != nil { t.Fatal(err) } err = event.AppendEvents(tx, []*eventV1.Event{ { Event: &eventV1.Event_WorkspaceEvent{ WorkspaceEvent: &workspaceV1.Event{ Event: &workspaceV1.Event_WorkspaceDisplayNameSet{ WorkspaceDisplayNameSet: &workspaceV1.WorkspaceDisplayNameSet{ DisplayName: proto.String("Foo Bar"), }, }, }, }, }, }) if err != nil { t.Fatal(err) } p, err := projection.GetWorkspace(tx) if err != nil { t.Fatal(err) } if err := event.UpdateProjections(tx, p); err != nil { t.Fatal(err) } if p.Projection.GetDisplayName() != "Foo Bar" { t.Errorf("Expected \"Foo Bar\", got \"%s\"", p.Projection.GetDisplayName()) } }
-
-
-
@@ -0,0 +1,41 @@// SPDX-FileCopyrightText: 2025 Shota FUJI <pockawoooh@gmail.com> // SPDX-License-Identifier: AGPL-3.0-only package migrations import ( "database/sql" "google.golang.org/protobuf/proto" eventV1 "pocka.jp/x/yamori/proto/go/backend/events/v1" workspaceV1 "pocka.jp/x/yamori/proto/go/backend/events/workspace/v1" ) type Migration002 struct{} func (_ Migration002) Run(tx *sql.Tx) error { workspaceDisplayNameSet, err := proto.Marshal(&eventV1.Event{ Event: &eventV1.Event_WorkspaceEvent{ WorkspaceEvent: &workspaceV1.Event{ Event: &workspaceV1.Event_WorkspaceDisplayNameSet{ WorkspaceDisplayNameSet: &workspaceV1.WorkspaceDisplayNameSet{ DisplayName: proto.String("名称未設定"), }, }, }, }, }) if err != nil { return err } _, err = tx.Exec("INSERT INTO events (payload) VALUES (?)", workspaceDisplayNameSet) return err } func (_ Migration002) Version() uint { return 2 }
-