Skip to content

Commit

Permalink
chore(storage/sql): use keyed field in struct literals
Browse files Browse the repository at this point in the history
  • Loading branch information
GeorgeMac committed Oct 27, 2022
1 parent afd9f67 commit 35eec68
Show file tree
Hide file tree
Showing 4 changed files with 61 additions and 27 deletions.
20 changes: 6 additions & 14 deletions internal/storage/sql/auth/store.go
Original file line number Diff line number Diff line change
Expand Up @@ -117,10 +117,10 @@ func (s *Store) CreateAuthentication(ctx context.Context, r *storage.CreateAuthe
&authentication.Id,
&hashedToken,
&authentication.Method,
&fliptsql.JSONField[map[string]string]{authentication.Metadata},
&fliptsql.Timestamp{authentication.ExpiresAt},
&fliptsql.Timestamp{authentication.CreatedAt},
&fliptsql.Timestamp{authentication.UpdatedAt},
&fliptsql.JSONField[map[string]string]{T: authentication.Metadata},
&fliptsql.Timestamp{Timestamp: authentication.ExpiresAt},
&fliptsql.Timestamp{Timestamp: authentication.CreatedAt},
&fliptsql.Timestamp{Timestamp: authentication.UpdatedAt},
).
ExecContext(ctx); err != nil {
return "", nil, fmt.Errorf(
Expand All @@ -145,7 +145,6 @@ func (s *Store) GetAuthenticationByClientToken(ctx context.Context, clientToken

var (
authentication auth.Authentication
method auth.Method
expiresAt fliptsql.Timestamp
createdAt fliptsql.Timestamp
updatedAt fliptsql.Timestamp
Expand All @@ -164,8 +163,8 @@ func (s *Store) GetAuthenticationByClientToken(ctx context.Context, clientToken
QueryRowContext(ctx).
Scan(
&authentication.Id,
&method,
&fliptsql.JSONField[*map[string]string]{&authentication.Metadata},
&authentication.Method,
&fliptsql.JSONField[*map[string]string]{T: &authentication.Metadata},
&expiresAt,
&createdAt,
&updatedAt,
Expand All @@ -176,20 +175,13 @@ func (s *Store) GetAuthenticationByClientToken(ctx context.Context, clientToken
)
}

authentication.Method = auth.Method(method)
authentication.ExpiresAt = expiresAt.Timestamp
authentication.CreatedAt = createdAt.Timestamp
authentication.UpdatedAt = updatedAt.Timestamp

return &authentication, nil
}

// ptr allows for one-lining the creation of a pointer
// to any type T.
func ptr[T any](t T) *T {
return &t
}

const decodedTokenLen = 32

// generateRandomToken produces a URL safe base64 encoded string of random characters
Expand Down
24 changes: 20 additions & 4 deletions internal/storage/sql/common/flag.go
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,14 @@ func (s *Store) CreateFlag(ctx context.Context, r *flipt.CreateFlagRequest) (*fl

if _, err := s.builder.Insert("flags").
Columns("\"key\"", "name", "description", "enabled", "created_at", "updated_at").
Values(flag.Key, flag.Name, flag.Description, flag.Enabled, &fliptsql.Timestamp{flag.CreatedAt}, &fliptsql.Timestamp{flag.UpdatedAt}).
Values(
flag.Key,
flag.Name,
flag.Description,
flag.Enabled,
&fliptsql.Timestamp{Timestamp: flag.CreatedAt},
&fliptsql.Timestamp{Timestamp: flag.UpdatedAt},
).
ExecContext(ctx); err != nil {
return nil, err
}
Expand All @@ -210,7 +217,7 @@ func (s *Store) UpdateFlag(ctx context.Context, r *flipt.UpdateFlagRequest) (*fl
Set("name", r.Name).
Set("description", r.Description).
Set("enabled", r.Enabled).
Set("updated_at", &fliptsql.Timestamp{timestamppb.Now()}).
Set("updated_at", &fliptsql.Timestamp{Timestamp: timestamppb.Now()}).
Where(sq.Eq{"\"key\"": r.Key})

res, err := query.ExecContext(ctx)
Expand Down Expand Up @@ -258,7 +265,16 @@ func (s *Store) CreateVariant(ctx context.Context, r *flipt.CreateVariantRequest
attachment := emptyAsNil(r.Attachment)
if _, err := s.builder.Insert("variants").
Columns("id", "flag_key", "\"key\"", "name", "description", "attachment", "created_at", "updated_at").
Values(v.Id, v.FlagKey, v.Key, v.Name, v.Description, attachment, &fliptsql.Timestamp{v.CreatedAt}, &fliptsql.Timestamp{v.UpdatedAt}).
Values(
v.Id,
v.FlagKey,
v.Key,
v.Name,
v.Description,
attachment,
&fliptsql.Timestamp{Timestamp: v.CreatedAt},
&fliptsql.Timestamp{Timestamp: v.UpdatedAt},
).
ExecContext(ctx); err != nil {
return nil, err
}
Expand All @@ -281,7 +297,7 @@ func (s *Store) UpdateVariant(ctx context.Context, r *flipt.UpdateVariantRequest
Set("name", r.Name).
Set("description", r.Description).
Set("attachment", emptyAsNil(r.Attachment)).
Set("updated_at", &fliptsql.Timestamp{timestamppb.Now()}).
Set("updated_at", &fliptsql.Timestamp{Timestamp: timestamppb.Now()}).
Where(sq.And{sq.Eq{"id": r.Id}, sq.Eq{"flag_key": r.FlagKey}})

res, err := query.ExecContext(ctx)
Expand Down
22 changes: 17 additions & 5 deletions internal/storage/sql/common/rule.go
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,13 @@ func (s *Store) CreateRule(ctx context.Context, r *flipt.CreateRuleRequest) (*fl
if _, err := s.builder.
Insert("rules").
Columns("id", "flag_key", "segment_key", "\"rank\"", "created_at", "updated_at").
Values(rule.Id, rule.FlagKey, rule.SegmentKey, rule.Rank, &fliptsql.Timestamp{rule.CreatedAt}, &fliptsql.Timestamp{rule.UpdatedAt}).
Values(
rule.Id,
rule.FlagKey,
rule.SegmentKey,
rule.Rank,
&fliptsql.Timestamp{Timestamp: rule.CreatedAt},
&fliptsql.Timestamp{Timestamp: rule.UpdatedAt}).
ExecContext(ctx); err != nil {
return nil, err
}
Expand All @@ -188,7 +194,7 @@ func (s *Store) CreateRule(ctx context.Context, r *flipt.CreateRuleRequest) (*fl
func (s *Store) UpdateRule(ctx context.Context, r *flipt.UpdateRuleRequest) (*flipt.Rule, error) {
query := s.builder.Update("rules").
Set("segment_key", r.SegmentKey).
Set("updated_at", &fliptsql.Timestamp{timestamppb.Now()}).
Set("updated_at", &fliptsql.Timestamp{Timestamp: timestamppb.Now()}).
Where(sq.And{sq.Eq{"id": r.Id}, sq.Eq{"flag_key": r.FlagKey}})

res, err := query.ExecContext(ctx)
Expand Down Expand Up @@ -289,7 +295,7 @@ func (s *Store) orderRules(ctx context.Context, runner sq.BaseRunner, flagKey st
_, err := s.builder.Update("rules").
RunWith(runner).
Set("\"rank\"", i+1).
Set("updated_at", &fliptsql.Timestamp{updatedAt}).
Set("updated_at", &fliptsql.Timestamp{Timestamp: updatedAt}).
Where(sq.And{sq.Eq{"id": id}, sq.Eq{"flag_key": flagKey}}).
ExecContext(ctx)
if err != nil {
Expand Down Expand Up @@ -317,7 +323,13 @@ func (s *Store) CreateDistribution(ctx context.Context, r *flipt.CreateDistribut
if _, err := s.builder.
Insert("distributions").
Columns("id", "rule_id", "variant_id", "rollout", "created_at", "updated_at").
Values(d.Id, d.RuleId, d.VariantId, d.Rollout, &fliptsql.Timestamp{d.CreatedAt}, &fliptsql.Timestamp{d.UpdatedAt}).
Values(
d.Id,
d.RuleId,
d.VariantId,
d.Rollout,
&fliptsql.Timestamp{Timestamp: d.CreatedAt},
&fliptsql.Timestamp{Timestamp: d.UpdatedAt}).
ExecContext(ctx); err != nil {
return nil, err
}
Expand All @@ -329,7 +341,7 @@ func (s *Store) CreateDistribution(ctx context.Context, r *flipt.CreateDistribut
func (s *Store) UpdateDistribution(ctx context.Context, r *flipt.UpdateDistributionRequest) (*flipt.Distribution, error) {
query := s.builder.Update("distributions").
Set("rollout", r.Rollout).
Set("updated_at", &fliptsql.Timestamp{timestamppb.Now()}).
Set("updated_at", &fliptsql.Timestamp{Timestamp: timestamppb.Now()}).
Where(sq.And{sq.Eq{"id": r.Id}, sq.Eq{"rule_id": r.RuleId}, sq.Eq{"variant_id": r.VariantId}})

res, err := query.ExecContext(ctx)
Expand Down
22 changes: 18 additions & 4 deletions internal/storage/sql/common/segment.go
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,13 @@ func (s *Store) CreateSegment(ctx context.Context, r *flipt.CreateSegmentRequest

if _, err := s.builder.Insert("segments").
Columns("\"key\"", "name", "description", "match_type", "created_at", "updated_at").
Values(segment.Key, segment.Name, segment.Description, segment.MatchType, &fliptsql.Timestamp{segment.CreatedAt}, &fliptsql.Timestamp{segment.UpdatedAt}).
Values(
segment.Key,
segment.Name,
segment.Description,
segment.MatchType,
&fliptsql.Timestamp{Timestamp: segment.CreatedAt},
&fliptsql.Timestamp{Timestamp: segment.UpdatedAt}).
ExecContext(ctx); err != nil {
return nil, err
}
Expand All @@ -195,7 +201,7 @@ func (s *Store) UpdateSegment(ctx context.Context, r *flipt.UpdateSegmentRequest
Set("name", r.Name).
Set("description", r.Description).
Set("match_type", r.MatchType).
Set("updated_at", &fliptsql.Timestamp{timestamppb.Now()}).
Set("updated_at", &fliptsql.Timestamp{Timestamp: timestamppb.Now()}).
Where(sq.Eq{"\"key\"": r.Key})

res, err := query.ExecContext(ctx)
Expand Down Expand Up @@ -248,7 +254,15 @@ func (s *Store) CreateConstraint(ctx context.Context, r *flipt.CreateConstraintR

if _, err := s.builder.Insert("constraints").
Columns("id", "segment_key", "type", "property", "operator", "value", "created_at", "updated_at").
Values(c.Id, c.SegmentKey, c.Type, c.Property, c.Operator, c.Value, &fliptsql.Timestamp{c.CreatedAt}, &fliptsql.Timestamp{c.UpdatedAt}).
Values(
c.Id,
c.SegmentKey,
c.Type,
c.Property,
c.Operator,
c.Value,
&fliptsql.Timestamp{Timestamp: c.CreatedAt},
&fliptsql.Timestamp{Timestamp: c.UpdatedAt}).
ExecContext(ctx); err != nil {
return nil, err
}
Expand All @@ -270,7 +284,7 @@ func (s *Store) UpdateConstraint(ctx context.Context, r *flipt.UpdateConstraintR
Set("property", r.Property).
Set("operator", operator).
Set("value", r.Value).
Set("updated_at", &fliptsql.Timestamp{timestamppb.Now()}).
Set("updated_at", &fliptsql.Timestamp{Timestamp: timestamppb.Now()}).
Where(sq.And{sq.Eq{"id": r.Id}, sq.Eq{"segment_key": r.SegmentKey}}).
ExecContext(ctx)
if err != nil {
Expand Down

0 comments on commit 35eec68

Please sign in to comment.