This commit is contained in:
6543 2023-02-09 17:52:30 +01:00
parent 1715e88910
commit 52a3b48016
9 changed files with 174 additions and 74 deletions

View file

@ -1,9 +1,11 @@
package database
import (
"errors"
"fmt"
"github.com/akrylysov/pogreb"
"github.com/rs/zerolog/log"
"github.com/go-acme/lego/v4/certificate"
"xorm.io/xorm"
@ -15,6 +17,8 @@ import (
var _ CertDB = xDB{}
var ErrNotFound = errors.New("entry not found")
type xDB struct {
engine *xorm.Engine
}
@ -43,28 +47,53 @@ func (x xDB) Close() error {
}
func (x xDB) Put(name string, cert *certificate.Resource) error {
// TODO implement me
panic("implement me")
log.Trace().Str("name", name).Msg("inserting cert to db")
c, err := toCert(name, cert)
if err != nil {
return err
}
_, err = x.engine.Insert(c)
return err
}
func (x xDB) Get(name string) (*certificate.Resource, error) {
// TODO implement me
panic("implement me")
cert := new(Cert)
log.Trace().Str("name", name).Msg("get cert from db")
if _, err := x.engine.ID(name).Get(&cert); err != nil {
return nil, err
}
if cert == nil {
return nil, fmt.Errorf("%w: name='%s'", ErrNotFound, name)
}
return cert.Raw(), nil
}
func (x xDB) Delete(key string) error {
// TODO implement me
panic("implement me")
func (x xDB) Delete(name string) error {
log.Trace().Str("name", name).Msg("delete cert from db")
_, err := x.engine.ID(name).Delete(new(Cert))
return err
}
func (x xDB) Compact() (string, error) {
// TODO implement me
panic("implement me")
// not needed
return "", nil
}
func (x xDB) Items() *pogreb.ItemIterator {
// TODO implement me
panic("implement me")
// Items return al certs from db, if pageSize is 0 it does not use limit
func (x xDB) Items(page, pageSize int) ([]*Cert, error) {
// paginated return
if pageSize >= 0 {
certs := make([]*Cert, 0, pageSize)
if page >= 0 {
page = 1
}
err := x.engine.Limit(pageSize, (page-1)*pageSize).Find(&certs)
return certs, err
}
// return all
certs := make([]*Cert, 0, 64)
return certs, x.engine.Find(&certs)
}
// Supported database drivers