bitbucket.org/Aishee/synsec@v0.0.0-20210414005726-236fc01a153d/pkg/database/bouncers.go (about) 1 package database 2 3 import ( 4 "fmt" 5 "time" 6 7 "bitbucket.org/Aishee/synsec/pkg/database/ent" 8 "bitbucket.org/Aishee/synsec/pkg/database/ent/bouncer" 9 "github.com/pkg/errors" 10 ) 11 12 func (c *Client) SelectBouncer(apiKeyHash string) (*ent.Bouncer, error) { 13 result, err := c.Ent.Bouncer.Query().Where(bouncer.APIKeyEQ(apiKeyHash)).First(c.CTX) 14 if err != nil { 15 return &ent.Bouncer{}, errors.Wrapf(QueryFail, "select bouncer: %s", err) 16 } 17 18 return result, nil 19 } 20 21 func (c *Client) ListBouncers() ([]*ent.Bouncer, error) { 22 result, err := c.Ent.Bouncer.Query().All(c.CTX) 23 if err != nil { 24 return []*ent.Bouncer{}, errors.Wrapf(QueryFail, "listing bouncer: %s", err) 25 } 26 return result, nil 27 } 28 29 func (c *Client) CreateBouncer(name string, ipAddr string, apiKey string) error { 30 _, err := c.Ent.Bouncer. 31 Create(). 32 SetName(name). 33 SetAPIKey(apiKey). 34 SetRevoked(false). 35 Save(c.CTX) 36 if err != nil { 37 if ent.IsConstraintError(err) { 38 return fmt.Errorf("bouncer %s already exists", name) 39 } 40 return fmt.Errorf("unable to save api key in database: %s", err) 41 } 42 return nil 43 } 44 45 func (c *Client) DeleteBouncer(name string) error { 46 _, err := c.Ent.Bouncer. 47 Delete(). 48 Where(bouncer.NameEQ(name)). 49 Exec(c.CTX) 50 if err != nil { 51 return fmt.Errorf("unable to save api key in database: %s", err) 52 } 53 return nil 54 } 55 56 func (c *Client) UpdateBouncerLastPull(lastPull time.Time, ID int) error { 57 _, err := c.Ent.Bouncer.UpdateOneID(ID). 58 SetLastPull(lastPull). 59 Save(c.CTX) 60 if err != nil { 61 return fmt.Errorf("unable to update machine in database: %s", err) 62 } 63 return nil 64 } 65 66 func (c *Client) UpdateBouncerIP(ipAddr string, ID int) error { 67 _, err := c.Ent.Bouncer.UpdateOneID(ID).SetIPAddress(ipAddr).Save(c.CTX) 68 if err != nil { 69 return fmt.Errorf("unable to update bouncer ip address in database: %s", err) 70 } 71 return nil 72 } 73 74 func (c *Client) UpdateBouncerTypeAndVersion(bType string, version string, ID int) error { 75 _, err := c.Ent.Bouncer.UpdateOneID(ID).SetVersion(version).SetType(bType).Save(c.CTX) 76 if err != nil { 77 return fmt.Errorf("unable to update bouncer type and version in database: %s", err) 78 } 79 return nil 80 }