forked from tangled.org/core
Monorepo for Tangled — https://tangled.org

appview/ingester: ingest sh.tangled.label.definition

Signed-off-by: oppiliappan <me@oppi.li>

oppi.li 9f5e1811 983781b1

verified
Changed files
+58 -1
appview
+57 -1
appview/ingester.go
···
err = i.ingestIssue(ctx, e)
case tangled.RepoIssueCommentNSID:
err = i.ingestIssueComment(e)
+
case tangled.LabelDefinitionNSID:
+
err = i.ingestLabelDefinition(e)
}
l = i.Logger.With("nsid", e.Commit.Collection)
}
···
return fmt.Errorf("invalid record: %w", err)
}
-
comment, err := db.IssueCommentFromRecord(ddb, did, rkey, record)
+
comment, err := db.IssueCommentFromRecord(did, rkey, record)
if err != nil {
return fmt.Errorf("failed to parse comment from record: %w", err)
}
···
return nil
}
+
+
func (i *Ingester) ingestLabelDefinition(e *models.Event) error {
+
did := e.Did
+
rkey := e.Commit.RKey
+
+
var err error
+
+
l := i.Logger.With("handler", "ingestLabelDefinition", "nsid", e.Commit.Collection, "did", did, "rkey", rkey)
+
l.Info("ingesting record")
+
+
ddb, ok := i.Db.Execer.(*db.DB)
+
if !ok {
+
return fmt.Errorf("failed to index label definition, invalid db cast")
+
}
+
+
switch e.Commit.Operation {
+
case models.CommitOperationCreate, models.CommitOperationUpdate:
+
raw := json.RawMessage(e.Commit.Record)
+
record := tangled.LabelDefinition{}
+
err = json.Unmarshal(raw, &record)
+
if err != nil {
+
return fmt.Errorf("invalid record: %w", err)
+
}
+
+
def, err := db.LabelDefinitionFromRecord(did, rkey, record)
+
if err != nil {
+
return fmt.Errorf("failed to parse labeldef from record: %w", err)
+
}
+
+
if err := i.Validator.ValidateLabelDefinition(def); err != nil {
+
return fmt.Errorf("failed to validate labeldef: %w", err)
+
}
+
+
_, err = db.AddLabelDefinition(ddb, def)
+
if err != nil {
+
return fmt.Errorf("failed to create labeldef: %w", err)
+
}
+
+
return nil
+
+
case models.CommitOperationDelete:
+
if err := db.DeleteLabelDefinition(
+
ddb,
+
db.FilterEq("did", did),
+
db.FilterEq("rkey", rkey),
+
); err != nil {
+
return fmt.Errorf("failed to delete labeldef record: %w", err)
+
}
+
+
return nil
+
}
+
+
return nil
+
}
+1
appview/state/state.go
···
tangled.StringNSID,
tangled.RepoIssueNSID,
tangled.RepoIssueCommentNSID,
+
tangled.LabelDefinitionNSID,
},
nil,
slog.Default(),