Skip to content

Commit 84cb672

Browse files
committed
chore: add lots of interface assertions
1 parent f7d4f30 commit 84cb672

File tree

10 files changed

+64
-6
lines changed

10 files changed

+64
-6
lines changed

autobatch/autobatch.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@ type Datastore struct {
1919
maxBufferEntries int
2020
}
2121

22+
var _ ds.Datastore = (*Datastore)(nil)
23+
var _ ds.PersistentDatastore = (*Datastore)(nil)
24+
2225
type op struct {
2326
delete bool
2427
value []byte

basic_ds.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@ type MapDatastore struct {
1414
values map[Key][]byte
1515
}
1616

17+
var _ Datastore = (*MapDatastore)(nil)
18+
var _ Batching = (*MapDatastore)(nil)
19+
1720
// NewMapDatastore constructs a MapDatastore. It is _not_ thread-safe by
1821
// default, wrap using sync.MutexWrap if you need thread safety (the answer here
1922
// is usually yes).
@@ -91,6 +94,9 @@ func (d *MapDatastore) Close() error {
9194
type NullDatastore struct {
9295
}
9396

97+
var _ Datastore = (*NullDatastore)(nil)
98+
var _ Batching = (*NullDatastore)(nil)
99+
94100
// NewNullDatastore constructs a null datastoe
95101
func NewNullDatastore() *NullDatastore {
96102
return &NullDatastore{}
@@ -145,6 +151,14 @@ type LogDatastore struct {
145151
child Datastore
146152
}
147153

154+
var _ Datastore = (*LogDatastore)(nil)
155+
var _ Batching = (*LogDatastore)(nil)
156+
var _ GCDatastore = (*LogDatastore)(nil)
157+
var _ PersistentDatastore = (*LogDatastore)(nil)
158+
var _ ScrubbedDatastore = (*LogDatastore)(nil)
159+
var _ CheckedDatastore = (*LogDatastore)(nil)
160+
var _ Shim = (*LogDatastore)(nil)
161+
148162
// Shim is a datastore which has a child.
149163
type Shim interface {
150164
Datastore
@@ -226,6 +240,8 @@ type LogBatch struct {
226240
child Batch
227241
}
228242

243+
var _ Batch = (*LogBatch)(nil)
244+
229245
func (d *LogDatastore) Batch(ctx context.Context) (Batch, error) {
230246
log.Printf("%s: Batch\n", d.Name)
231247
if bds, ok := d.child.(Batching); ok {

batch.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ type basicBatch struct {
1717
target Datastore
1818
}
1919

20+
var _ Batch = (*basicBatch)(nil)
21+
2022
func NewBasicBatch(ds Datastore) Batch {
2123
return &basicBatch{
2224
ops: make(map[Key]op),

delayed/delayed.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,9 @@ type Delayed struct {
2222
delay delay.D
2323
}
2424

25+
var _ ds.Datastore = (*Delayed)(nil)
2526
var _ ds.Batching = (*Delayed)(nil)
27+
var _ ds.PersistentDatastore = (*Delayed)(nil)
2628
var _ io.Closer = (*Delayed)(nil)
2729

2830
// Put implements the ds.Datastore interface.

examples/fs.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,10 @@ type Datastore struct {
3737
path string
3838
}
3939

40+
var _ ds.Datastore = (*Datastore)(nil)
41+
var _ ds.Batching = (*Datastore)(nil)
42+
var _ ds.PersistentDatastore = (*Datastore)(nil)
43+
4044
// NewDatastore returns a new fs Datastore at given `path`
4145
func NewDatastore(path string) (ds.Datastore, error) {
4246
if !isDir(path) {

failstore/failstore.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@ type Failstore struct {
1717
errfunc func(string) error
1818
}
1919

20+
var _ ds.Datastore = (*Failstore)(nil)
21+
var _ ds.Batching = (*Failstore)(nil)
22+
var _ ds.PersistentDatastore = (*Failstore)(nil)
23+
2024
// NewFailstore creates a new datastore with the given error function.
2125
// The efunc will be called with different strings depending on the
2226
// datastore function: put, get, has, delete, query, batch, batch-put,
@@ -117,6 +121,8 @@ type FailBatch struct {
117121
dstore *Failstore
118122
}
119123

124+
var _ ds.Batch = (*FailBatch)(nil)
125+
120126
// Batch returns a new Batch Failstore.
121127
func (d *Failstore) Batch(ctx context.Context) (ds.Batch, error) {
122128
if err := d.errfunc("batch"); err != nil {

keytransform/keytransform.go

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,14 @@ type Datastore struct {
2929
KeyTransform
3030
}
3131

32+
var _ ds.Datastore = (*Datastore)(nil)
33+
var _ ds.Batching = (*Datastore)(nil)
34+
var _ ds.Shim = (*Datastore)(nil)
35+
var _ ds.PersistentDatastore = (*Datastore)(nil)
36+
var _ ds.CheckedDatastore = (*Datastore)(nil)
37+
var _ ds.ScrubbedDatastore = (*Datastore)(nil)
38+
var _ ds.GCDatastore = (*Datastore)(nil)
39+
3240
// Children implements ds.Shim
3341
func (d *Datastore) Children() []ds.Datastore {
3442
return []ds.Datastore{d.child}
@@ -222,6 +230,8 @@ type transformBatch struct {
222230
f KeyMapping
223231
}
224232

233+
var _ ds.Batch = (*transformBatch)(nil)
234+
225235
func (t *transformBatch) Put(ctx context.Context, key ds.Key, val []byte) error {
226236
return t.dst.Put(ctx, t.f(key), val)
227237
}
@@ -254,9 +264,3 @@ func (d *Datastore) CollectGarbage(ctx context.Context) error {
254264
}
255265
return nil
256266
}
257-
258-
var _ ds.Datastore = (*Datastore)(nil)
259-
var _ ds.GCDatastore = (*Datastore)(nil)
260-
var _ ds.Batching = (*Datastore)(nil)
261-
var _ ds.PersistentDatastore = (*Datastore)(nil)
262-
var _ ds.ScrubbedDatastore = (*Datastore)(nil)

mount/mount.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,11 @@ type Datastore struct {
6969
}
7070

7171
var _ ds.Datastore = (*Datastore)(nil)
72+
var _ ds.Batching = (*Datastore)(nil)
73+
var _ ds.PersistentDatastore = (*Datastore)(nil)
74+
var _ ds.CheckedDatastore = (*Datastore)(nil)
75+
var _ ds.ScrubbedDatastore = (*Datastore)(nil)
76+
var _ ds.GCDatastore = (*Datastore)(nil)
7277

7378
// lookup looks up the datastore in which the given key lives.
7479
func (d *Datastore) lookup(key ds.Key) (ds.Datastore, ds.Key, ds.Key) {
@@ -406,6 +411,8 @@ type mountBatch struct {
406411
d *Datastore
407412
}
408413

414+
var _ ds.Batch = (*mountBatch)(nil)
415+
409416
// Batch returns a batch that operates over all mounted datastores.
410417
func (d *Datastore) Batch(ctx context.Context) (ds.Batch, error) {
411418
return &mountBatch{

retrystore/retrystore.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,10 @@ type Datastore struct {
2424
ds.Batching
2525
}
2626

27+
var _ ds.Datastore = (*Datastore)(nil)
28+
var _ ds.Batching = (*Datastore)(nil)
29+
var _ ds.PersistentDatastore = (*Datastore)(nil)
30+
2731
var errFmtString = "ran out of retries trying to get past temporary error: %w"
2832

2933
func (d *Datastore) runOp(op func() error) error {

sync/sync.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,14 @@ type MutexDatastore struct {
1616
child ds.Datastore
1717
}
1818

19+
var _ ds.Datastore = (*MutexDatastore)(nil)
20+
var _ ds.Batching = (*MutexDatastore)(nil)
21+
var _ ds.Shim = (*MutexDatastore)(nil)
22+
var _ ds.PersistentDatastore = (*MutexDatastore)(nil)
23+
var _ ds.CheckedDatastore = (*MutexDatastore)(nil)
24+
var _ ds.ScrubbedDatastore = (*MutexDatastore)(nil)
25+
var _ ds.GCDatastore = (*MutexDatastore)(nil)
26+
1927
// MutexWrap constructs a datastore with a coarse lock around the entire
2028
// datastore, for every single operation.
2129
func MutexWrap(d ds.Datastore) *MutexDatastore {
@@ -129,6 +137,8 @@ type syncBatch struct {
129137
mds *MutexDatastore
130138
}
131139

140+
var _ ds.Batch = (*syncBatch)(nil)
141+
132142
func (b *syncBatch) Put(ctx context.Context, key ds.Key, val []byte) error {
133143
b.mds.Lock()
134144
defer b.mds.Unlock()

0 commit comments

Comments
 (0)