/
account.go
93 lines (82 loc) · 1.8 KB
/
account.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
package database
import (
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/service/dynamodb"
bugLog "github.com/bugfixes/go-bugfixes/logs"
)
type AccountStorage struct {
Database Database
}
const (
AccountLevelDeity = iota
AccountLevelOwner
AccountLevelSub
)
type AccountCredentials struct {
Key string `json:"key"`
Secret string `json:"secret"`
}
type AccountRecord struct {
ID string `json:"id"`
Name string `json:"name"`
ParentID string `json:"parent_id"`
Email string `json:"email"`
AccountCredentials
Level int `json:"level"`
DateCreated string `json:"date_created"`
}
func GetAccountLevel(level string) int {
switch level {
case "diety":
return AccountLevelDeity
case "owner":
return AccountLevelOwner
default:
return AccountLevelSub
}
}
func NewAccountStorage(d Database) *AccountStorage {
return &AccountStorage{
Database: d,
}
}
func (a AccountStorage) Insert(data AccountRecord) error {
svc, err := a.Database.dynamoSession()
if err != nil {
return bugLog.Errorf("insert agent: %+v", err)
}
_, err = svc.PutItem(&dynamodb.PutItemInput{
Item: map[string]*dynamodb.AttributeValue{
"id": {
S: aws.String(data.ID),
},
"name": {
S: aws.String(data.Name),
},
"date_created": {
S: aws.String(data.DateCreated),
},
"credentials": {
M: map[string]*dynamodb.AttributeValue{
"key": {
S: aws.String(data.AccountCredentials.Key),
},
"secret": {
S: aws.String(data.AccountCredentials.Secret),
},
},
},
},
TableName: aws.String(a.Database.Config.AccountsTable),
})
if err != nil {
return dynamoError(err)
}
return nil
}
func (a AccountStorage) Fetch(id string) (AccountRecord, error) {
return AccountRecord{}, nil
}
func (a AccountStorage) Delete(id string) error {
return nil
}