Skip to content

Commit 7160177

Browse files
committed
fixes
1 parent 4d9d133 commit 7160177

File tree

2 files changed

+142
-6
lines changed

2 files changed

+142
-6
lines changed

table/options/models.go

Lines changed: 51 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -447,7 +447,7 @@ func (ttl TimeToLiveSettings) WithColumnName(columnName string) TimeToLiveSettin
447447
return ttl
448448
}
449449

450-
func (ttl TimeToLiveSettings) WithExpireAfter(expireAfter time.Duration) TimeToLiveSettings {
450+
func (ttl TimeToLiveSettings) ExpireAfter(expireAfter time.Duration) TimeToLiveSettings {
451451
ttl.ExpireAfterSeconds = uint32(expireAfter.Seconds())
452452
return ttl
453453
}
@@ -457,11 +457,61 @@ func (ttl TimeToLiveSettings) WithMode(mode TimeToLiveMode) TimeToLiveSettings {
457457
return ttl
458458
}
459459

460+
func (ttl TimeToLiveSettings) ModeDate() TimeToLiveSettings {
461+
ttl.Mode = TimeToLiveModeDateType
462+
ttl.ColumnUnit = nil
463+
return ttl
464+
}
465+
466+
func (ttl TimeToLiveSettings) ModeSinceEpoch() TimeToLiveSettings {
467+
ttl.Mode = TimeToLiveModeValueSinceUnixEpoch
468+
if ttl.ColumnUnit == nil {
469+
return ttl.ColumnUnitSeconds()
470+
}
471+
return ttl
472+
}
473+
460474
func (ttl TimeToLiveSettings) WithColumnUnit(columnUnit TimeToLiveUnit) TimeToLiveSettings {
461475
ttl.ColumnUnit = &columnUnit
462476
return ttl
463477
}
464478

479+
func (ttl TimeToLiveSettings) ColumnUnitSeconds() TimeToLiveSettings {
480+
if ttl.Mode != TimeToLiveModeValueSinceUnixEpoch {
481+
ttl.Mode = TimeToLiveModeValueSinceUnixEpoch
482+
}
483+
columnUnit := TimeToLiveUnitSeconds
484+
ttl.ColumnUnit = &columnUnit
485+
return ttl
486+
}
487+
488+
func (ttl TimeToLiveSettings) ColumnUnitMilliseconds() TimeToLiveSettings {
489+
if ttl.Mode != TimeToLiveModeValueSinceUnixEpoch {
490+
ttl.Mode = TimeToLiveModeValueSinceUnixEpoch
491+
}
492+
columnUnit := TimeToLiveUnitMilliseconds
493+
ttl.ColumnUnit = &columnUnit
494+
return ttl
495+
}
496+
497+
func (ttl TimeToLiveSettings) ColumnUnitMicroseconds() TimeToLiveSettings {
498+
if ttl.Mode != TimeToLiveModeValueSinceUnixEpoch {
499+
ttl.Mode = TimeToLiveModeValueSinceUnixEpoch
500+
}
501+
columnUnit := TimeToLiveUnitMicroseconds
502+
ttl.ColumnUnit = &columnUnit
503+
return ttl
504+
}
505+
506+
func (ttl TimeToLiveSettings) ColumnUnitNanoseconds() TimeToLiveSettings {
507+
if ttl.Mode != TimeToLiveModeValueSinceUnixEpoch {
508+
ttl.Mode = TimeToLiveModeValueSinceUnixEpoch
509+
}
510+
columnUnit := TimeToLiveUnitNanoseconds
511+
ttl.ColumnUnit = &columnUnit
512+
return ttl
513+
}
514+
465515
func (ttl *TimeToLiveSettings) ToYDB() *Ydb_Table.TtlSettings {
466516
if ttl == nil {
467517
return nil

table/options/models_test.go

Lines changed: 91 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
package options
22

33
import (
4-
"reflect"
54
"testing"
65
"time"
6+
7+
"github.com/stretchr/testify/require"
78
)
89

910
func TestTimeToLiveSettingsFluentModifiers(t *testing.T) {
@@ -16,7 +17,49 @@ func TestTimeToLiveSettingsFluentModifiers(t *testing.T) {
1617
WithColumnName("a").
1718
WithColumnUnit(TimeToLiveUnitSeconds).
1819
WithMode(TimeToLiveModeValueSinceUnixEpoch).
19-
WithExpireAfter(time.Hour),
20+
ExpireAfter(time.Hour),
21+
expectedSettings: TimeToLiveSettings{
22+
ColumnName: "a",
23+
Mode: TimeToLiveModeValueSinceUnixEpoch,
24+
ExpireAfterSeconds: uint32(time.Hour.Seconds()),
25+
ColumnUnit: func() *TimeToLiveUnit {
26+
u := TimeToLiveUnitSeconds
27+
return &u
28+
}(),
29+
},
30+
},
31+
{
32+
fluentSettings: TimeToLiveSettings{}.
33+
WithColumnName("a").
34+
ModeDate().
35+
ExpireAfter(time.Hour),
36+
expectedSettings: TimeToLiveSettings{
37+
ColumnName: "a",
38+
Mode: TimeToLiveModeDateType,
39+
ExpireAfterSeconds: uint32(time.Hour.Seconds()),
40+
},
41+
},
42+
{
43+
fluentSettings: TimeToLiveSettings{}.
44+
WithColumnName("a").
45+
ModeSinceEpoch().
46+
ColumnUnitSeconds().
47+
ExpireAfter(time.Hour),
48+
expectedSettings: TimeToLiveSettings{
49+
ColumnName: "a",
50+
Mode: TimeToLiveModeValueSinceUnixEpoch,
51+
ExpireAfterSeconds: uint32(time.Hour.Seconds()),
52+
ColumnUnit: func() *TimeToLiveUnit {
53+
u := TimeToLiveUnitSeconds
54+
return &u
55+
}(),
56+
},
57+
},
58+
{
59+
fluentSettings: TimeToLiveSettings{}.
60+
WithColumnName("a").
61+
ColumnUnitSeconds().
62+
ExpireAfter(time.Hour),
2063
expectedSettings: TimeToLiveSettings{
2164
ColumnName: "a",
2265
Mode: TimeToLiveModeValueSinceUnixEpoch,
@@ -27,11 +70,54 @@ func TestTimeToLiveSettingsFluentModifiers(t *testing.T) {
2770
}(),
2871
},
2972
},
73+
{
74+
fluentSettings: TimeToLiveSettings{}.
75+
WithColumnName("a").
76+
ColumnUnitMilliseconds().
77+
ExpireAfter(time.Hour),
78+
expectedSettings: TimeToLiveSettings{
79+
ColumnName: "a",
80+
Mode: TimeToLiveModeValueSinceUnixEpoch,
81+
ExpireAfterSeconds: uint32(time.Hour.Seconds()),
82+
ColumnUnit: func() *TimeToLiveUnit {
83+
u := TimeToLiveUnitMilliseconds
84+
return &u
85+
}(),
86+
},
87+
},
88+
{
89+
fluentSettings: TimeToLiveSettings{}.
90+
WithColumnName("a").
91+
ColumnUnitMicroseconds().
92+
ExpireAfter(time.Hour),
93+
expectedSettings: TimeToLiveSettings{
94+
ColumnName: "a",
95+
Mode: TimeToLiveModeValueSinceUnixEpoch,
96+
ExpireAfterSeconds: uint32(time.Hour.Seconds()),
97+
ColumnUnit: func() *TimeToLiveUnit {
98+
u := TimeToLiveUnitMicroseconds
99+
return &u
100+
}(),
101+
},
102+
},
103+
{
104+
fluentSettings: TimeToLiveSettings{}.
105+
WithColumnName("a").
106+
ColumnUnitNanoseconds().
107+
ExpireAfter(time.Hour),
108+
expectedSettings: TimeToLiveSettings{
109+
ColumnName: "a",
110+
Mode: TimeToLiveModeValueSinceUnixEpoch,
111+
ExpireAfterSeconds: uint32(time.Hour.Seconds()),
112+
ColumnUnit: func() *TimeToLiveUnit {
113+
u := TimeToLiveUnitNanoseconds
114+
return &u
115+
}(),
116+
},
117+
},
30118
} {
31119
t.Run("", func(t *testing.T) {
32-
if !reflect.DeepEqual(tt.fluentSettings, tt.expectedSettings) {
33-
t.Errorf("unexpected ttl settings: %v, expectedSettings: %v", tt.fluentSettings, tt.expectedSettings)
34-
}
120+
require.Equal(t, tt.fluentSettings, tt.expectedSettings)
35121
})
36122
}
37123
}

0 commit comments

Comments
 (0)