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  }