+57
-1
appview/ingester.go
+57
-1
appview/ingester.go
···
77
77
err = i.ingestIssue(ctx, e)
78
78
case tangled.RepoIssueCommentNSID:
79
79
err = i.ingestIssueComment(e)
80
+
case tangled.LabelDefinitionNSID:
81
+
err = i.ingestLabelDefinition(e)
80
82
}
81
83
l = i.Logger.With("nsid", e.Commit.Collection)
82
84
}
···
866
868
return fmt.Errorf("invalid record: %w", err)
867
869
}
868
870
869
-
comment, err := db.IssueCommentFromRecord(ddb, did, rkey, record)
871
+
comment, err := db.IssueCommentFromRecord(did, rkey, record)
870
872
if err != nil {
871
873
return fmt.Errorf("failed to parse comment from record: %w", err)
872
874
}
···
896
898
897
899
return nil
898
900
}
901
+
902
+
func (i *Ingester) ingestLabelDefinition(e *models.Event) error {
903
+
did := e.Did
904
+
rkey := e.Commit.RKey
905
+
906
+
var err error
907
+
908
+
l := i.Logger.With("handler", "ingestLabelDefinition", "nsid", e.Commit.Collection, "did", did, "rkey", rkey)
909
+
l.Info("ingesting record")
910
+
911
+
ddb, ok := i.Db.Execer.(*db.DB)
912
+
if !ok {
913
+
return fmt.Errorf("failed to index label definition, invalid db cast")
914
+
}
915
+
916
+
switch e.Commit.Operation {
917
+
case models.CommitOperationCreate, models.CommitOperationUpdate:
918
+
raw := json.RawMessage(e.Commit.Record)
919
+
record := tangled.LabelDefinition{}
920
+
err = json.Unmarshal(raw, &record)
921
+
if err != nil {
922
+
return fmt.Errorf("invalid record: %w", err)
923
+
}
924
+
925
+
def, err := db.LabelDefinitionFromRecord(did, rkey, record)
926
+
if err != nil {
927
+
return fmt.Errorf("failed to parse labeldef from record: %w", err)
928
+
}
929
+
930
+
if err := i.Validator.ValidateLabelDefinition(def); err != nil {
931
+
return fmt.Errorf("failed to validate labeldef: %w", err)
932
+
}
933
+
934
+
_, err = db.AddLabelDefinition(ddb, def)
935
+
if err != nil {
936
+
return fmt.Errorf("failed to create labeldef: %w", err)
937
+
}
938
+
939
+
return nil
940
+
941
+
case models.CommitOperationDelete:
942
+
if err := db.DeleteLabelDefinition(
943
+
ddb,
944
+
db.FilterEq("did", did),
945
+
db.FilterEq("rkey", rkey),
946
+
); err != nil {
947
+
return fmt.Errorf("failed to delete labeldef record: %w", err)
948
+
}
949
+
950
+
return nil
951
+
}
952
+
953
+
return nil
954
+
}