-
Notifications
You must be signed in to change notification settings - Fork 0
/
repository.go
67 lines (49 loc) · 1.82 KB
/
repository.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
package data
import (
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/service/dynamodb"
"github.com/aws/aws-sdk-go/service/dynamodb/dynamodbattribute"
"github.com/jrolstad/engineering-signal-collector/internal/pkg/core"
"github.com/jrolstad/engineering-signal-collector/internal/pkg/policy"
)
type Repository interface {
SavePolicyResult(id string, data *policy.PolicyResult) error
SaveStandardDataModel(id string, objectType string, data *map[string]interface{}) error
}
func NewDataRepository() Repository {
repository := new(DynamoDbRepository)
session := core.GetAwsSession()
repository.client = dynamodb.New(session)
return repository
}
const (
dynamodbTable_PolicyResult = "engineering_signal_collector_prd_policyresult"
dynamodbTable_StandardData = "engineering_signal_collector_prd_standarddata"
)
type DynamoDbRepository struct {
client *dynamodb.DynamoDB
}
func (repository *DynamoDbRepository) SavePolicyResult(id string, data *policy.PolicyResult) error {
attributes, _ := dynamodbattribute.MarshalMap(data)
idValue, _ := dynamodbattribute.Marshal(id)
attributes["id"] = idValue
input := &dynamodb.PutItemInput{
Item: attributes,
TableName: aws.String(dynamodbTable_PolicyResult),
}
_, putError := repository.client.PutItem(input)
return putError
}
func (repository *DynamoDbRepository) SaveStandardDataModel(id string, objectType string, data *map[string]interface{}) error {
attributes, _ := dynamodbattribute.MarshalMap(data)
idValue, _ := dynamodbattribute.Marshal(id)
attributes["id"] = idValue
objectTypeValue, _ := dynamodbattribute.Marshal(objectType)
attributes["object_type"] = objectTypeValue
input := &dynamodb.PutItemInput{
Item: attributes,
TableName: aws.String(dynamodbTable_StandardData),
}
_, putError := repository.client.PutItem(input)
return putError
}