diff options
author | Niall Sheridan <nsheridan@gmail.com> | 2016-09-10 20:14:20 +0100 |
---|---|---|
committer | Niall Sheridan <nsheridan@gmail.com> | 2016-09-11 20:41:32 +0100 |
commit | 2e7c8c2f521c9e50bb3aea4df16771c22fe70e58 (patch) | |
tree | 44daf7fea192d0e2368b2bb93545098c0adf610a /server/store/sqldb.go | |
parent | adc3c7f16051d51a58d96e32082aaeb051e3da20 (diff) |
Allow filtering results
Diffstat (limited to 'server/store/sqldb.go')
-rw-r--r-- | server/store/sqldb.go | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/server/store/sqldb.go b/server/store/sqldb.go index 54a52c6..81784b0 100644 --- a/server/store/sqldb.go +++ b/server/store/sqldb.go @@ -16,11 +16,12 @@ import ( type sqldb struct { conn *sql.DB - get *sql.Stmt - set *sql.Stmt - list *sql.Stmt - revoke *sql.Stmt - revoked *sql.Stmt + get *sql.Stmt + set *sql.Stmt + listAll *sql.Stmt + listCurrent *sql.Stmt + revoke *sql.Stmt + revoked *sql.Stmt } func parse(config string) []string { @@ -66,8 +67,11 @@ func NewSQLStore(config string) (CertStorer, error) { if db.get, err = conn.Prepare("SELECT * FROM issued_certs WHERE key_id = ?"); err != nil { return nil, fmt.Errorf("sqldb: prepare get: %v", err) } - if db.list, err = conn.Prepare("SELECT * FROM issued_certs WHERE ? <= expires_at"); err != nil { - return nil, fmt.Errorf("sqldb: prepare list: %v", err) + if db.listAll, err = conn.Prepare("SELECT * FROM issued_certs"); err != nil { + return nil, fmt.Errorf("sqldb: prepare listAll: %v", err) + } + if db.listCurrent, err = conn.Prepare("SELECT * FROM issued_certs WHERE ? <= expires_at"); err != nil { + return nil, fmt.Errorf("sqldb: prepare listCurrent: %v", err) } if db.revoke, err = conn.Prepare("UPDATE issued_certs SET revoked = 1 WHERE key_id = ?"); err != nil { return nil, fmt.Errorf("sqldb: prepare revoke: %v", err) @@ -132,12 +136,17 @@ func (db *sqldb) SetRecord(rec *CertRecord) error { return err } -func (db *sqldb) List() ([]*CertRecord, error) { +func (db *sqldb) List(includeExpired bool) ([]*CertRecord, error) { if err := db.conn.Ping(); err != nil { return nil, err } var recs []*CertRecord - rows, _ := db.revoked.Query(time.Now().UTC()) + var rows *sql.Rows + if includeExpired { + rows, _ = db.listAll.Query() + } else { + rows, _ = db.listCurrent.Query(time.Now().UTC()) + } defer rows.Close() for rows.Next() { cert, err := scanCert(rows) |