-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
domain.go
45 lines (37 loc) · 1.38 KB
/
domain.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
package entities
import (
av "github.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue"
ddbTypes "github.com/aws/aws-sdk-go-v2/service/dynamodb/types"
"github.com/google/uuid"
"github.com/littleurl/api/internal/timestamp"
)
type DomainID = string
/**
* entity
*/
type Domain struct {
// core data
Id DomainID `json:"id" dynamodbav:"id"`
Domain string `json:"domain" dynamodbav:"domain"`
Description *string `json:"description,omitempty" dynamodbav:"description,omitempty"`
DefaultTarget *string `json:"default_target,omitempty" dynamodbav:"default_target,omitempty"`
// engine config
Engine EngineConfig `json:"engine" dynamodbav:"engine"`
// meta
CreatedAt timestamp.Timestamp `json:"created_at" dynamodbav:"created_at"`
UpdatedAt timestamp.Timestamp `json:"updated_at" dynamodbav:"updated_at"`
UserRole string `json:"user_role,omitempty" dynamodbav:"-"` // not stored in dynamo
}
func NewDomain() *Domain {
return &Domain{
Id: uuid.NewString(),
CreatedAt: timestamp.Now(),
UpdatedAt: timestamp.Now(),
}
}
func (domain *Domain) MarshalDynamoAV() (map[string]ddbTypes.AttributeValue, error) {
return av.MarshalMap(domain)
}
func (domain *Domain) UnmarshalDynamoAV(item map[string]ddbTypes.AttributeValue) error {
return av.UnmarshalMap(item, domain)
}