-
Notifications
You must be signed in to change notification settings - Fork 0
/
token_records.go
60 lines (52 loc) · 2.19 KB
/
token_records.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
package cluster
import (
"crypto/x509"
"github.com/canonical/lxd/shared"
internalTypes "github.com/masnax/microclustertest/internal/rest/types"
"github.com/masnax/microclustertest/rest/types"
)
// Code generation directives.
//
//go:generate -command mapper lxd-generate db mapper -t token_records.mapper.go
//go:generate mapper reset
//
//go:generate mapper stmt -e internal_token_record objects table=internal_token_records
//go:generate mapper stmt -e internal_token_record objects-by-Secret table=internal_token_records
//go:generate mapper stmt -e internal_token_record id table=internal_token_records
//go:generate mapper stmt -e internal_token_record create table=internal_token_records
//go:generate mapper stmt -e internal_token_record delete-by-Name table=internal_token_records
//
//go:generate mapper method -e internal_token_record ID table=internal_token_records
//go:generate mapper method -e internal_token_record Exists table=internal_token_records
//go:generate mapper method -e internal_token_record GetOne table=internal_token_records
//go:generate mapper method -e internal_token_record GetMany table=internal_token_records
//go:generate mapper method -e internal_token_record Create table=internal_token_records
//go:generate mapper method -e internal_token_record DeleteOne-by-Name table=internal_token_records
// InternalTokenRecord is the database representation of a join token record.
type InternalTokenRecord struct {
ID int
Secret string `db:"primary=yes"`
Name string
}
// InternalTokenRecordFilter is the filter struct for filtering results from generated methods.
type InternalTokenRecordFilter struct {
ID *int
Secret *string
Name *string
}
// ToAPI converts the InternalTokenRecord to a full token and returns an API compatible struct.
func (t *InternalTokenRecord) ToAPI(clusterCert *x509.Certificate, joinAddresses []types.AddrPort) (*internalTypes.TokenRecord, error) {
token := internalTypes.Token{
Secret: t.Secret,
Fingerprint: shared.CertFingerprint(clusterCert),
JoinAddresses: joinAddresses,
}
tokenString, err := token.String()
if err != nil {
return nil, err
}
return &internalTypes.TokenRecord{
Token: tokenString,
Name: t.Name,
}, nil
}