Monorepo for Tangled 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
··· 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 + }
+1
appview/state/state.go
··· 102 102 tangled.StringNSID, 103 103 tangled.RepoIssueNSID, 104 104 tangled.RepoIssueCommentNSID, 105 + tangled.LabelDefinitionNSID, 105 106 }, 106 107 nil, 107 108 slog.Default(),