-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsetter.go
56 lines (51 loc) · 1.37 KB
/
setter.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
package dalgo2firestore
import (
"context"
"fmt"
"github.com/dal-go/dalgo/dal"
)
//type setter struct {
// client *firestore.Client
// keyToDocRef keyToDocRefFunc
// set func(ctx context.Context, docRef *firestore.DocumentRef, data interface{}) (_ *firestore.WriteResult, err error)
// bulkWriter func(ctx context.Context) *firestore.BulkWriter
//}
//func newSetter(dtb database) setter {
// return setter{
// keyToDocRef: keyToDocRef,
// set: set,
// bulkWriter: func(ctx context.Context) *firestore.BulkWriter {
// return dtb.client.BulkWriter(ctx)
// },
// }
//}
func (db database) Set(ctx context.Context, record dal.Record) (err error) {
if record == nil {
panic("record is a required parameter, got nil")
}
if Debugf != nil {
Debugf(ctx, "db.Set(key=%s)", record.Key().String())
}
key := record.Key()
docRef := db.keyToDocRef(key)
if docRef == nil {
return fmt.Errorf("keyToDocRef is nil for key=%v", key)
}
data := record.Data()
_, err = set(ctx, docRef, data)
return err
}
func (db database) SetMulti(ctx context.Context, records []dal.Record) error {
logMultiRecords(ctx, "db.SetMulti", records)
batch := db.bulkWriter(ctx)
for _, record := range records {
key := record.Key()
docRef := db.keyToDocRef(key)
data := record.Data()
if _, err := batch.Set(docRef, data); err != nil {
return err
}
}
batch.End()
return nil
}