Skip to content

Commit 3ffae69

Browse files
authored
Merge pull request #21 from objectbox/go-tag-commas
Go annotations - support comma separator
2 parents 5ea6051 + 5501980 commit 3ffae69

6 files changed

Lines changed: 27 additions & 17 deletions

File tree

internal/generator/go/ast-reader.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import (
2727
"log"
2828
"path"
2929
"reflect"
30+
"regexp"
3031
"strconv"
3132
"strings"
3233

@@ -665,8 +666,8 @@ func parseAnnotations(tags string, annotations *map[string]*binding.Annotation)
665666
return nil
666667
}
667668

668-
// tags are space-separated
669-
for _, tag := range strings.Split(tags, " ") {
669+
// tags are space or comma separated
670+
for _, tag := range regexp.MustCompile("[ ,]+").Split(tags, -1) {
670671
if len(tag) > 0 {
671672
var name string
672673
var value = &binding.Annotation{}

test/comparison/test-all.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -106,16 +106,16 @@ func generateOneDir(t *testing.T, overwriteExpected bool, conf testSpec, srcType
106106
errorTransformer = errTrans
107107
}
108108

109-
// Go generator updates generator go.mod when loading files (adds the missing objectbox-go import).
110-
// Therefore, we'll load files from the temp dir instead
111-
srcDir = genDir
112-
113109
modelInfoFile := generator.ModelInfoFile(genDir)
114110
modelInfoExpectedFile := generator.ModelInfoFile(srcDir) + ".expected"
115111

116112
modelCodeFile := conf.generator.ModelFile(modelInfoFile, generator.Options{OutPath: genDir})
117113
modelCodeExpectedFile := conf.generator.ModelFile(generator.ModelInfoFile(expDir), generator.Options{}) + ".expected"
118114

115+
// Go generator updates generator go.mod when loading files (adds the missing objectbox-go import).
116+
// Therefore, we'll load files from the temp dir instead
117+
srcDir = genDir
118+
119119
// run the generation twice, first time with deleting old modelInfo
120120
for i := 0; i <= 1; i++ {
121121
if i == 0 {

test/comparison/testdata/go/typeful/objectbox-model.go.expected

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ func ObjectBoxModel() *objectbox.Model {
1616
model.RegisterBinding(NillableBinding)
1717
model.RegisterBinding(TypefulBinding)
1818
model.LastEntityId(3, 959367522974354090)
19+
model.LastIndexId(2, 8902041070398994519)
1920

2021
return model
2122
}

test/comparison/testdata/go/typeful/objectbox-model.json.expected

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@
167167
},
168168
{
169169
"id": "3:959367522974354090",
170-
"lastPropertyId": "22:3959279844101328186",
170+
"lastPropertyId": "22:303089054982227392",
171171
"name": "Typeful",
172172
"properties": [
173173
{
@@ -275,23 +275,27 @@
275275
{
276276
"id": "20:388440063886460141",
277277
"name": "Date",
278-
"type": 10
278+
"indexId": "1:7561811714888168464",
279+
"type": 10,
280+
"flags": 8
279281
},
280282
{
281-
"id": "21:7561811714888168464",
283+
"id": "21:3959279844101328186",
282284
"name": "Time",
283-
"type": 10
285+
"indexId": "2:8902041070398994519",
286+
"type": 10,
287+
"flags": 8
284288
},
285289
{
286-
"id": "22:3959279844101328186",
290+
"id": "22:303089054982227392",
287291
"name": "Time2",
288292
"type": 10
289293
}
290294
]
291295
}
292296
],
293297
"lastEntityId": "3:959367522974354090",
294-
"lastIndexId": "",
298+
"lastIndexId": "2:8902041070398994519",
295299
"lastRelationId": "",
296300
"modelVersion": 5,
297301
"modelVersionParserMinimum": 5,

test/comparison/testdata/go/typeful/typeful.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ type Typeful struct {
2323
Rune rune
2424
Float32 float32
2525
Float64 float64
26-
Date int64 `objectbox:"date"`
27-
Time time.Time `objectbox:"date"`
26+
Date int64 `objectbox:"date index"`
27+
Time time.Time `objectbox:"date,index"`
2828
Time2 time.Time // prints a warning, otherwise the same as with an annotation
2929
}

test/comparison/testdata/go/typeful/typeful.obx.go.expected

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -216,9 +216,13 @@ func (typeful_EntityInfo) AddToModel(model *objectbox.Model) {
216216
model.Property("Float32", 7, 18, 4345851588384648695)
217217
model.Property("Float64", 8, 19, 7699391924090763411)
218218
model.Property("Date", 10, 20, 388440063886460141)
219-
model.Property("Time", 10, 21, 7561811714888168464)
220-
model.Property("Time2", 10, 22, 3959279844101328186)
221-
model.EntityLastPropertyId(22, 3959279844101328186)
219+
model.PropertyFlags(8)
220+
model.PropertyIndex(1, 7561811714888168464)
221+
model.Property("Time", 10, 21, 3959279844101328186)
222+
model.PropertyFlags(8)
223+
model.PropertyIndex(2, 8902041070398994519)
224+
model.Property("Time2", 10, 22, 303089054982227392)
225+
model.EntityLastPropertyId(22, 303089054982227392)
222226
}
223227

224228
// GetId is called by ObjectBox during Put operations to check for existing ID on an object

0 commit comments

Comments
 (0)