implement and test sql db accessor
This commit is contained in:
@@ -7,20 +7,20 @@ import (
|
||||
)
|
||||
|
||||
type InMemoryDb struct {
|
||||
Customers map[m.CustomerId]Customer
|
||||
Users map[m.UserId]User
|
||||
Customers map[m.CustomerId]m.Customer
|
||||
Users map[m.UserId]m.User
|
||||
userIdMap map[string]m.UserId
|
||||
}
|
||||
|
||||
func NewInMemoryDb() InMemoryDb {
|
||||
return InMemoryDb{
|
||||
Customers: make(map[m.CustomerId]Customer),
|
||||
Users: make(map[m.UserId]User),
|
||||
Customers: make(map[m.CustomerId]m.Customer),
|
||||
Users: make(map[m.UserId]m.User),
|
||||
userIdMap: make(map[string]m.UserId),
|
||||
}
|
||||
}
|
||||
|
||||
func (db *InMemoryDb) GetCustomer(id m.CustomerId) (*Customer, error) {
|
||||
func (db *InMemoryDb) GetCustomer(id m.CustomerId) (*m.Customer, error) {
|
||||
customer, exists := db.Customers[id]
|
||||
if !exists {
|
||||
return nil, errors.New(fmt.Sprintf("customer %s dne", customer.Id))
|
||||
@@ -28,7 +28,7 @@ func (db *InMemoryDb) GetCustomer(id m.CustomerId) (*Customer, error) {
|
||||
return &customer, nil
|
||||
}
|
||||
|
||||
func (db *InMemoryDb) GetUser(username m.Username, customerId m.CustomerId) (*User, error) {
|
||||
func (db *InMemoryDb) GetUser(username m.Username, customerId m.CustomerId) (*m.User, error) {
|
||||
key := userIdKey(customerId, username)
|
||||
userId, exists := db.userIdMap[key]
|
||||
if !exists {
|
||||
@@ -41,7 +41,7 @@ func (db *InMemoryDb) GetUser(username m.Username, customerId m.CustomerId) (*Us
|
||||
return &user, nil
|
||||
}
|
||||
|
||||
func (db *InMemoryDb) WriteNewCustomer(customer Customer) error {
|
||||
func (db *InMemoryDb) WriteNewCustomer(customer m.Customer) error {
|
||||
_, exists := db.Customers[customer.Id]
|
||||
|
||||
if exists {
|
||||
@@ -51,7 +51,7 @@ func (db *InMemoryDb) WriteNewCustomer(customer Customer) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (db *InMemoryDb) WriteNewUser(user User) error {
|
||||
func (db *InMemoryDb) WriteNewUser(user m.User) error {
|
||||
_, exists := db.Customers[user.CustomerId]
|
||||
if !exists {
|
||||
return errors.New(fmt.Sprintf("can't add user %s to customer %s: customer dne", user.Username, user.CustomerId))
|
||||
@@ -67,7 +67,7 @@ func (db *InMemoryDb) WriteNewUser(user User) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (db *InMemoryDb) UpdateUserInterface(userId m.UserId, ui UserInterface) error {
|
||||
func (db *InMemoryDb) UpdateUserInterface(userId m.UserId, ui m.UserInterface) error {
|
||||
user, exists := db.Users[userId]
|
||||
if !exists {
|
||||
return errors.New(fmt.Sprintf("can't update user %s, dne", user.Id))
|
||||
@@ -82,18 +82,29 @@ func (db *InMemoryDb) Renew(id m.CustomerId) error {
|
||||
return errors.New(fmt.Sprintf("customer %s does not exist", id))
|
||||
}
|
||||
setXor, attrsXor := customer.RenewKeys()
|
||||
db.Customers[id] = customer
|
||||
var err error
|
||||
for _, user := range db.Users {
|
||||
if user.CustomerId == id {
|
||||
err = user.RenewKeys(setXor[:user.Kp.AttrsPerKey], attrsXor[:user.Kp.TotalAttrs()])
|
||||
err = user.RenewKeys(setXor, attrsXor)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
db.Users[user.Id] = user
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (db *InMemoryDb) RefreshUser(user m.User, passocode []int, customerAttr m.CustomerAttributes) error {
|
||||
err := user.RefreshPasscode(passocode, customerAttr)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
db.Users[user.Id] = user
|
||||
return nil
|
||||
}
|
||||
|
||||
func userIdKey(customerId m.CustomerId, username m.Username) string {
|
||||
key := fmt.Sprintf("%s:%s", customerId, username)
|
||||
return key
|
||||
|
||||
Reference in New Issue
Block a user