Monorepo for Tangled tangled.org

spindle: add repo filter

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

oppi.li 3d33f3da 2a45e84f

verified
Changed files
+38
spindle
+20
spindle/db/repos.go
··· 1 1 package db 2 2 3 + type Repo struct { 4 + Knot string 5 + Owner string 6 + Name string 7 + } 8 + 3 9 func (d *DB) AddRepo(knot, owner, name string) error { 4 10 _, err := d.Exec(`insert or ignore into repos (knot, owner, name) values (?, ?, ?)`, knot, owner, name) 5 11 return err ··· 26 32 27 33 return knots, nil 28 34 } 35 + 36 + func (d *DB) GetRepo(knot, owner, name string) (*Repo, error) { 37 + var repo Repo 38 + 39 + query := "select knot, owner, name from repos where knot = ? and owner = ? and name = ?" 40 + err := d.DB.QueryRow(query, knot, owner, name). 41 + Scan(&repo.Knot, &repo.Owner, &repo.Name) 42 + 43 + if err != nil { 44 + return nil, err 45 + } 46 + 47 + return &repo, nil 48 + }
+18
spindle/server.go
··· 159 159 return err 160 160 } 161 161 162 + if pipeline.TriggerMetadata == nil { 163 + return fmt.Errorf("no trigger metadata found") 164 + } 165 + 166 + if pipeline.TriggerMetadata.Repo == nil { 167 + return fmt.Errorf("no repo data found") 168 + } 169 + 170 + // filter by repos 171 + _, err = s.db.GetRepo( 172 + pipeline.TriggerMetadata.Repo.Knot, 173 + pipeline.TriggerMetadata.Repo.Did, 174 + pipeline.TriggerMetadata.Repo.Repo, 175 + ) 176 + if err != nil { 177 + return err 178 + } 179 + 162 180 pipelineId := models.PipelineId{ 163 181 Knot: src.Knot, 164 182 Rkey: msg.Rkey,