From 454dcc8eaf71c94d188aee58707731ea7dc8bb7f Mon Sep 17 00:00:00 2001 From: oppiliappan Date: Mon, 22 Sep 2025 15:19:34 +0100 Subject: [PATCH] appview/models: init move db.Artifact to models.Artifact Signed-off-by: oppiliappan --- appview/db/artifact.go | 30 ++---------- appview/ingester.go | 93 +++++++++++++++++++------------------- appview/models/artifact.go | 30 ++++++++++++ appview/pages/pages.go | 7 +-- appview/repo/artifact.go | 3 +- appview/repo/repo.go | 5 +- 6 files changed, 91 insertions(+), 77 deletions(-) create mode 100644 appview/models/artifact.go diff --git a/appview/db/artifact.go b/appview/db/artifact.go index 447d0015..407ff3a3 100644 --- a/appview/db/artifact.go +++ b/appview/db/artifact.go @@ -5,32 +5,12 @@ import ( "strings" "time" - "github.com/bluesky-social/indigo/atproto/syntax" "github.com/go-git/go-git/v5/plumbing" "github.com/ipfs/go-cid" - "tangled.org/core/api/tangled" + "tangled.org/core/appview/models" ) -type Artifact struct { - Id uint64 - Did string - Rkey string - - RepoAt syntax.ATURI - Tag plumbing.Hash - CreatedAt time.Time - - BlobCid cid.Cid - Name string - Size uint64 - MimeType string -} - -func (a *Artifact) ArtifactAt() syntax.ATURI { - return syntax.ATURI(fmt.Sprintf("at://%s/%s/%s", a.Did, tangled.RepoArtifactNSID, a.Rkey)) -} - -func AddArtifact(e Execer, artifact Artifact) error { +func AddArtifact(e Execer, artifact models.Artifact) error { _, err := e.Exec( `insert or ignore into artifacts ( did, @@ -57,8 +37,8 @@ func AddArtifact(e Execer, artifact Artifact) error { return err } -func GetArtifact(e Execer, filters ...filter) ([]Artifact, error) { - var artifacts []Artifact +func GetArtifact(e Execer, filters ...filter) ([]models.Artifact, error) { + var artifacts []models.Artifact var conditions []string var args []any @@ -94,7 +74,7 @@ func GetArtifact(e Execer, filters ...filter) ([]Artifact, error) { defer rows.Close() for rows.Next() { - var artifact Artifact + var artifact models.Artifact var createdAt string var tag []byte var blobCid string diff --git a/appview/ingester.go b/appview/ingester.go index 91b150a2..ce4b4c7f 100644 --- a/appview/ingester.go +++ b/appview/ingester.go @@ -9,12 +9,13 @@ import ( "time" "github.com/bluesky-social/indigo/atproto/syntax" - "github.com/bluesky-social/jetstream/pkg/models" + jmodels "github.com/bluesky-social/jetstream/pkg/models" "github.com/go-git/go-git/v5/plumbing" "github.com/ipfs/go-cid" "tangled.org/core/api/tangled" "tangled.org/core/appview/config" "tangled.org/core/appview/db" + "tangled.org/core/appview/models" "tangled.org/core/appview/serververify" "tangled.org/core/appview/validator" "tangled.org/core/idresolver" @@ -30,10 +31,10 @@ type Ingester struct { Validator *validator.Validator } -type processFunc func(ctx context.Context, e *models.Event) error +type processFunc func(ctx context.Context, e *jmodels.Event) error func (i *Ingester) Ingest() processFunc { - return func(ctx context.Context, e *models.Event) error { + return func(ctx context.Context, e *jmodels.Event) error { var err error defer func() { eventTime := e.TimeUS @@ -45,13 +46,13 @@ func (i *Ingester) Ingest() processFunc { l := i.Logger.With("kind", e.Kind) switch e.Kind { - case models.EventKindAccount: + case jmodels.EventKindAccount: if !e.Account.Active && *e.Account.Status == "deactivated" { err = i.IdResolver.InvalidateIdent(ctx, e.Account.Did) } - case models.EventKindIdentity: + case jmodels.EventKindIdentity: err = i.IdResolver.InvalidateIdent(ctx, e.Identity.Did) - case models.EventKindCommit: + case jmodels.EventKindCommit: switch e.Commit.Collection { case tangled.GraphFollowNSID: err = i.ingestFollow(e) @@ -91,7 +92,7 @@ func (i *Ingester) Ingest() processFunc { } } -func (i *Ingester) ingestStar(e *models.Event) error { +func (i *Ingester) ingestStar(e *jmodels.Event) error { var err error did := e.Did @@ -99,7 +100,7 @@ func (i *Ingester) ingestStar(e *models.Event) error { l = l.With("nsid", e.Commit.Collection) switch e.Commit.Operation { - case models.CommitOperationCreate, models.CommitOperationUpdate: + case jmodels.CommitOperationCreate, jmodels.CommitOperationUpdate: var subjectUri syntax.ATURI raw := json.RawMessage(e.Commit.Record) @@ -120,7 +121,7 @@ func (i *Ingester) ingestStar(e *models.Event) error { RepoAt: subjectUri, Rkey: e.Commit.RKey, }) - case models.CommitOperationDelete: + case jmodels.CommitOperationDelete: err = db.DeleteStarByRkey(i.Db, did, e.Commit.RKey) } @@ -131,7 +132,7 @@ func (i *Ingester) ingestStar(e *models.Event) error { return nil } -func (i *Ingester) ingestFollow(e *models.Event) error { +func (i *Ingester) ingestFollow(e *jmodels.Event) error { var err error did := e.Did @@ -139,7 +140,7 @@ func (i *Ingester) ingestFollow(e *models.Event) error { l = l.With("nsid", e.Commit.Collection) switch e.Commit.Operation { - case models.CommitOperationCreate, models.CommitOperationUpdate: + case jmodels.CommitOperationCreate, jmodels.CommitOperationUpdate: raw := json.RawMessage(e.Commit.Record) record := tangled.GraphFollow{} err = json.Unmarshal(raw, &record) @@ -153,7 +154,7 @@ func (i *Ingester) ingestFollow(e *models.Event) error { SubjectDid: record.Subject, Rkey: e.Commit.RKey, }) - case models.CommitOperationDelete: + case jmodels.CommitOperationDelete: err = db.DeleteFollowByRkey(i.Db, did, e.Commit.RKey) } @@ -164,7 +165,7 @@ func (i *Ingester) ingestFollow(e *models.Event) error { return nil } -func (i *Ingester) ingestPublicKey(e *models.Event) error { +func (i *Ingester) ingestPublicKey(e *jmodels.Event) error { did := e.Did var err error @@ -172,7 +173,7 @@ func (i *Ingester) ingestPublicKey(e *models.Event) error { l = l.With("nsid", e.Commit.Collection) switch e.Commit.Operation { - case models.CommitOperationCreate, models.CommitOperationUpdate: + case jmodels.CommitOperationCreate, jmodels.CommitOperationUpdate: l.Debug("processing add of pubkey") raw := json.RawMessage(e.Commit.Record) record := tangled.PublicKey{} @@ -185,7 +186,7 @@ func (i *Ingester) ingestPublicKey(e *models.Event) error { name := record.Name key := record.Key err = db.AddPublicKey(i.Db, did, name, key, e.Commit.RKey) - case models.CommitOperationDelete: + case jmodels.CommitOperationDelete: l.Debug("processing delete of pubkey") err = db.DeletePublicKeyByRkey(i.Db, did, e.Commit.RKey) } @@ -197,7 +198,7 @@ func (i *Ingester) ingestPublicKey(e *models.Event) error { return nil } -func (i *Ingester) ingestArtifact(e *models.Event) error { +func (i *Ingester) ingestArtifact(e *jmodels.Event) error { did := e.Did var err error @@ -205,7 +206,7 @@ func (i *Ingester) ingestArtifact(e *models.Event) error { l = l.With("nsid", e.Commit.Collection) switch e.Commit.Operation { - case models.CommitOperationCreate, models.CommitOperationUpdate: + case jmodels.CommitOperationCreate, jmodels.CommitOperationUpdate: raw := json.RawMessage(e.Commit.Record) record := tangled.RepoArtifact{} err = json.Unmarshal(raw, &record) @@ -234,7 +235,7 @@ func (i *Ingester) ingestArtifact(e *models.Event) error { createdAt = time.Now() } - artifact := db.Artifact{ + artifact := models.Artifact{ Did: did, Rkey: e.Commit.RKey, RepoAt: repoAt, @@ -247,7 +248,7 @@ func (i *Ingester) ingestArtifact(e *models.Event) error { } err = db.AddArtifact(i.Db, artifact) - case models.CommitOperationDelete: + case jmodels.CommitOperationDelete: err = db.DeleteArtifact(i.Db, db.FilterEq("did", did), db.FilterEq("rkey", e.Commit.RKey)) } @@ -258,7 +259,7 @@ func (i *Ingester) ingestArtifact(e *models.Event) error { return nil } -func (i *Ingester) ingestProfile(e *models.Event) error { +func (i *Ingester) ingestProfile(e *jmodels.Event) error { did := e.Did var err error @@ -270,7 +271,7 @@ func (i *Ingester) ingestProfile(e *models.Event) error { } switch e.Commit.Operation { - case models.CommitOperationCreate, models.CommitOperationUpdate: + case jmodels.CommitOperationCreate, jmodels.CommitOperationUpdate: raw := json.RawMessage(e.Commit.Record) record := tangled.ActorProfile{} err = json.Unmarshal(raw, &record) @@ -338,7 +339,7 @@ func (i *Ingester) ingestProfile(e *models.Event) error { } err = db.UpsertProfile(tx, &profile) - case models.CommitOperationDelete: + case jmodels.CommitOperationDelete: err = db.DeleteArtifact(i.Db, db.FilterEq("did", did), db.FilterEq("rkey", e.Commit.RKey)) } @@ -349,7 +350,7 @@ func (i *Ingester) ingestProfile(e *models.Event) error { return nil } -func (i *Ingester) ingestSpindleMember(ctx context.Context, e *models.Event) error { +func (i *Ingester) ingestSpindleMember(ctx context.Context, e *jmodels.Event) error { did := e.Did var err error @@ -357,7 +358,7 @@ func (i *Ingester) ingestSpindleMember(ctx context.Context, e *models.Event) err l = l.With("nsid", e.Commit.Collection) switch e.Commit.Operation { - case models.CommitOperationCreate: + case jmodels.CommitOperationCreate: raw := json.RawMessage(e.Commit.Record) record := tangled.SpindleMember{} err = json.Unmarshal(raw, &record) @@ -402,7 +403,7 @@ func (i *Ingester) ingestSpindleMember(ctx context.Context, e *models.Event) err } l.Info("added spindle member") - case models.CommitOperationDelete: + case jmodels.CommitOperationDelete: rkey := e.Commit.RKey ddb, ok := i.Db.Execer.(*db.DB) @@ -455,7 +456,7 @@ func (i *Ingester) ingestSpindleMember(ctx context.Context, e *models.Event) err return nil } -func (i *Ingester) ingestSpindle(ctx context.Context, e *models.Event) error { +func (i *Ingester) ingestSpindle(ctx context.Context, e *jmodels.Event) error { did := e.Did var err error @@ -463,7 +464,7 @@ func (i *Ingester) ingestSpindle(ctx context.Context, e *models.Event) error { l = l.With("nsid", e.Commit.Collection) switch e.Commit.Operation { - case models.CommitOperationCreate: + case jmodels.CommitOperationCreate: raw := json.RawMessage(e.Commit.Record) record := tangled.Spindle{} err = json.Unmarshal(raw, &record) @@ -501,7 +502,7 @@ func (i *Ingester) ingestSpindle(ctx context.Context, e *models.Event) error { return nil - case models.CommitOperationDelete: + case jmodels.CommitOperationDelete: instance := e.Commit.RKey ddb, ok := i.Db.Execer.(*db.DB) @@ -569,7 +570,7 @@ func (i *Ingester) ingestSpindle(ctx context.Context, e *models.Event) error { return nil } -func (i *Ingester) ingestString(e *models.Event) error { +func (i *Ingester) ingestString(e *jmodels.Event) error { did := e.Did rkey := e.Commit.RKey @@ -584,7 +585,7 @@ func (i *Ingester) ingestString(e *models.Event) error { } switch e.Commit.Operation { - case models.CommitOperationCreate, models.CommitOperationUpdate: + case jmodels.CommitOperationCreate, jmodels.CommitOperationUpdate: raw := json.RawMessage(e.Commit.Record) record := tangled.String{} err = json.Unmarshal(raw, &record) @@ -607,7 +608,7 @@ func (i *Ingester) ingestString(e *models.Event) error { return nil - case models.CommitOperationDelete: + case jmodels.CommitOperationDelete: if err := db.DeleteString( ddb, db.FilterEq("did", did), @@ -623,7 +624,7 @@ func (i *Ingester) ingestString(e *models.Event) error { return nil } -func (i *Ingester) ingestKnotMember(e *models.Event) error { +func (i *Ingester) ingestKnotMember(e *jmodels.Event) error { did := e.Did var err error @@ -631,7 +632,7 @@ func (i *Ingester) ingestKnotMember(e *models.Event) error { l = l.With("nsid", e.Commit.Collection) switch e.Commit.Operation { - case models.CommitOperationCreate: + case jmodels.CommitOperationCreate: raw := json.RawMessage(e.Commit.Record) record := tangled.KnotMember{} err = json.Unmarshal(raw, &record) @@ -661,7 +662,7 @@ func (i *Ingester) ingestKnotMember(e *models.Event) error { } l.Info("added knot member") - case models.CommitOperationDelete: + case jmodels.CommitOperationDelete: // we don't store knot members in a table (like we do for spindle) // and we can't remove this just yet. possibly fixed if we switch // to either: @@ -675,7 +676,7 @@ func (i *Ingester) ingestKnotMember(e *models.Event) error { return nil } -func (i *Ingester) ingestKnot(e *models.Event) error { +func (i *Ingester) ingestKnot(e *jmodels.Event) error { did := e.Did var err error @@ -683,7 +684,7 @@ func (i *Ingester) ingestKnot(e *models.Event) error { l = l.With("nsid", e.Commit.Collection) switch e.Commit.Operation { - case models.CommitOperationCreate: + case jmodels.CommitOperationCreate: raw := json.RawMessage(e.Commit.Record) record := tangled.Knot{} err = json.Unmarshal(raw, &record) @@ -718,7 +719,7 @@ func (i *Ingester) ingestKnot(e *models.Event) error { return nil - case models.CommitOperationDelete: + case jmodels.CommitOperationDelete: domain := e.Commit.RKey ddb, ok := i.Db.Execer.(*db.DB) @@ -778,7 +779,7 @@ func (i *Ingester) ingestKnot(e *models.Event) error { return nil } -func (i *Ingester) ingestIssue(ctx context.Context, e *models.Event) error { +func (i *Ingester) ingestIssue(ctx context.Context, e *jmodels.Event) error { did := e.Did rkey := e.Commit.RKey @@ -793,7 +794,7 @@ func (i *Ingester) ingestIssue(ctx context.Context, e *models.Event) error { } switch e.Commit.Operation { - case models.CommitOperationCreate, models.CommitOperationUpdate: + case jmodels.CommitOperationCreate, jmodels.CommitOperationUpdate: raw := json.RawMessage(e.Commit.Record) record := tangled.RepoIssue{} err = json.Unmarshal(raw, &record) @@ -829,7 +830,7 @@ func (i *Ingester) ingestIssue(ctx context.Context, e *models.Event) error { return nil - case models.CommitOperationDelete: + case jmodels.CommitOperationDelete: if err := db.DeleteIssues( ddb, db.FilterEq("did", did), @@ -845,7 +846,7 @@ func (i *Ingester) ingestIssue(ctx context.Context, e *models.Event) error { return nil } -func (i *Ingester) ingestIssueComment(e *models.Event) error { +func (i *Ingester) ingestIssueComment(e *jmodels.Event) error { did := e.Did rkey := e.Commit.RKey @@ -860,7 +861,7 @@ func (i *Ingester) ingestIssueComment(e *models.Event) error { } switch e.Commit.Operation { - case models.CommitOperationCreate, models.CommitOperationUpdate: + case jmodels.CommitOperationCreate, jmodels.CommitOperationUpdate: raw := json.RawMessage(e.Commit.Record) record := tangled.RepoIssueComment{} err = json.Unmarshal(raw, &record) @@ -884,7 +885,7 @@ func (i *Ingester) ingestIssueComment(e *models.Event) error { return nil - case models.CommitOperationDelete: + case jmodels.CommitOperationDelete: if err := db.DeleteIssueComments( ddb, db.FilterEq("did", did), @@ -899,7 +900,7 @@ func (i *Ingester) ingestIssueComment(e *models.Event) error { return nil } -func (i *Ingester) ingestLabelDefinition(e *models.Event) error { +func (i *Ingester) ingestLabelDefinition(e *jmodels.Event) error { did := e.Did rkey := e.Commit.RKey @@ -914,7 +915,7 @@ func (i *Ingester) ingestLabelDefinition(e *models.Event) error { } switch e.Commit.Operation { - case models.CommitOperationCreate, models.CommitOperationUpdate: + case jmodels.CommitOperationCreate, jmodels.CommitOperationUpdate: raw := json.RawMessage(e.Commit.Record) record := tangled.LabelDefinition{} err = json.Unmarshal(raw, &record) @@ -938,7 +939,7 @@ func (i *Ingester) ingestLabelDefinition(e *models.Event) error { return nil - case models.CommitOperationDelete: + case jmodels.CommitOperationDelete: if err := db.DeleteLabelDefinition( ddb, db.FilterEq("did", did), diff --git a/appview/models/artifact.go b/appview/models/artifact.go new file mode 100644 index 00000000..e3c14121 --- /dev/null +++ b/appview/models/artifact.go @@ -0,0 +1,30 @@ +package models + +import ( + "fmt" + "time" + + "github.com/bluesky-social/indigo/atproto/syntax" + "github.com/go-git/go-git/v5/plumbing" + "github.com/ipfs/go-cid" + "tangled.org/core/api/tangled" +) + +type Artifact struct { + Id uint64 + Did string + Rkey string + + RepoAt syntax.ATURI + Tag plumbing.Hash + CreatedAt time.Time + + BlobCid cid.Cid + Name string + Size uint64 + MimeType string +} + +func (a *Artifact) ArtifactAt() syntax.ATURI { + return syntax.ATURI(fmt.Sprintf("at://%s/%s/%s", a.Did, tangled.RepoArtifactNSID, a.Rkey)) +} diff --git a/appview/pages/pages.go b/appview/pages/pages.go index ed841b23..ed4df302 100644 --- a/appview/pages/pages.go +++ b/appview/pages/pages.go @@ -20,6 +20,7 @@ import ( "tangled.org/core/appview/commitverify" "tangled.org/core/appview/config" "tangled.org/core/appview/db" + "tangled.org/core/appview/models" "tangled.org/core/appview/oauth" "tangled.org/core/appview/pages/markup" "tangled.org/core/appview/pages/repoinfo" @@ -729,8 +730,8 @@ type RepoTagsParams struct { RepoInfo repoinfo.RepoInfo Active string types.RepoTagsResponse - ArtifactMap map[plumbing.Hash][]db.Artifact - DanglingArtifacts []db.Artifact + ArtifactMap map[plumbing.Hash][]models.Artifact + DanglingArtifacts []models.Artifact } func (p *Pages) RepoTags(w io.Writer, params RepoTagsParams) error { @@ -741,7 +742,7 @@ func (p *Pages) RepoTags(w io.Writer, params RepoTagsParams) error { type RepoArtifactParams struct { LoggedInUser *oauth.User RepoInfo repoinfo.RepoInfo - Artifact db.Artifact + Artifact models.Artifact } func (p *Pages) RepoArtifactFragment(w io.Writer, params RepoArtifactParams) error { diff --git a/appview/repo/artifact.go b/appview/repo/artifact.go index 87344695..022de157 100644 --- a/appview/repo/artifact.go +++ b/appview/repo/artifact.go @@ -18,6 +18,7 @@ import ( "github.com/ipfs/go-cid" "tangled.org/core/api/tangled" "tangled.org/core/appview/db" + "tangled.org/core/appview/models" "tangled.org/core/appview/pages" "tangled.org/core/appview/reporesolver" "tangled.org/core/appview/xrpcclient" @@ -100,7 +101,7 @@ func (rp *Repo) AttachArtifact(w http.ResponseWriter, r *http.Request) { } defer tx.Rollback() - artifact := db.Artifact{ + artifact := models.Artifact{ Did: user.Did, Rkey: rkey, RepoAt: f.RepoAt(), diff --git a/appview/repo/repo.go b/appview/repo/repo.go index cdad16b5..58516f94 100644 --- a/appview/repo/repo.go +++ b/appview/repo/repo.go @@ -24,6 +24,7 @@ import ( "tangled.org/core/appview/commitverify" "tangled.org/core/appview/config" "tangled.org/core/appview/db" + "tangled.org/core/appview/models" "tangled.org/core/appview/notify" "tangled.org/core/appview/oauth" "tangled.org/core/appview/pages" @@ -575,12 +576,12 @@ func (rp *Repo) RepoTags(w http.ResponseWriter, r *http.Request) { } // convert artifacts to map for easy UI building - artifactMap := make(map[plumbing.Hash][]db.Artifact) + artifactMap := make(map[plumbing.Hash][]models.Artifact) for _, a := range artifacts { artifactMap[a.Tag] = append(artifactMap[a.Tag], a) } - var danglingArtifacts []db.Artifact + var danglingArtifacts []models.Artifact for _, a := range artifacts { found := false for _, t := range result.Tags { -- 2.51.2