Skip to content

Commit 29882d3

Browse files
committed
fix: Set jsonschema tag
1 parent 8ff399c commit 29882d3

29 files changed

+66
-61
lines changed

sample/adjust/schema.json

+1-1
Large diffs are not rendered by default.

sample/detect_relations/schema.json

+1-1
Large diffs are not rendered by default.

sample/detect_relations_singular/schema.json

+1-1
Large diffs are not rendered by default.

sample/dict/schema.json

+1-1
Large diffs are not rendered by default.

sample/dynamodb/schema.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"name":"Amazon DynamoDB (ap-northeast-1)","tables":[{"name":"Forum","type":"BASIC TABLE","columns":[{"name":"Name","type":"S","nullable":false}],"constraints":[{"name":"Primary Key","type":"Partition key","def":"[{ AttributeName: \"Name\", KeyType: \"HASH\" }]","table":null,"columns":["Name"]}]},{"name":"ProductCatalog","type":"BASIC TABLE","columns":[{"name":"Id","type":"N","nullable":false}],"constraints":[{"name":"Primary Key","type":"Partition key","def":"[{ AttributeName: \"Id\", KeyType: \"HASH\" }]","table":null,"columns":["Id"]}]},{"name":"Reply","type":"BASIC TABLE","columns":[{"name":"Id","type":"S","nullable":false},{"name":"ReplyDateTime","type":"S","nullable":false},{"name":"PostedBy","type":"S","nullable":false}],"indexes":[{"name":"PostedBy-index","def":"LocalSecondaryIndex { [{ AttributeName: \"Id\", KeyType: \"HASH\" } { AttributeName: \"PostedBy\", KeyType: \"RANGE\" }], { ProjectionType: \"KEYS_ONLY\" } }","table":null,"columns":null}],"constraints":[{"name":"Primary Key","type":"Partition key and sort key","def":"[{ AttributeName: \"Id\", KeyType: \"HASH\" } { AttributeName: \"ReplyDateTime\", KeyType: \"RANGE\" }]","table":null,"columns":["Id","ReplyDateTime"]}]},{"name":"Thread","type":"BASIC TABLE","columns":[{"name":"ForumName","type":"S","nullable":false},{"name":"Subject","type":"S","nullable":false}],"constraints":[{"name":"Primary Key","type":"Partition key and sort key","def":"[{ AttributeName: \"ForumName\", KeyType: \"HASH\" } { AttributeName: \"Subject\", KeyType: \"RANGE\" }]","table":null,"columns":["ForumName","Subject"]}]}],"relations":[{"table":"Thread","columns":["ForumName"],"cardinality":"Zero or more","parent_table":"Forum","parent_columns":["Name"],"parent_cardinality":"Exactly one","def":"Thread-\u003eForum","virtual":true}],"driver":{"name":"dynamodb","meta":{"dict":{"Column":"Attribute","Columns":"Attributes","Constraints":"Primary Key","Indexes":"Secondary Indexes"}}}}
1+
{"name":"Amazon DynamoDB (ap-northeast-1)","tables":[{"name":"Forum","type":"BASIC TABLE","columns":[{"name":"Name","type":"S","nullable":false}],"constraints":[{"name":"Primary Key","type":"Partition key","def":"[{ AttributeName: \"Name\", KeyType: \"HASH\" }]","table":null,"columns":["Name"]}]},{"name":"ProductCatalog","type":"BASIC TABLE","columns":[{"name":"Id","type":"N","nullable":false}],"constraints":[{"name":"Primary Key","type":"Partition key","def":"[{ AttributeName: \"Id\", KeyType: \"HASH\" }]","table":null,"columns":["Id"]}]},{"name":"Reply","type":"BASIC TABLE","columns":[{"name":"Id","type":"S","nullable":false},{"name":"ReplyDateTime","type":"S","nullable":false},{"name":"PostedBy","type":"S","nullable":false}],"indexes":[{"name":"PostedBy-index","def":"LocalSecondaryIndex { [{ AttributeName: \"Id\", KeyType: \"HASH\" } { AttributeName: \"PostedBy\", KeyType: \"RANGE\" }], { ProjectionType: \"KEYS_ONLY\" } }","table":null,"columns":null}],"constraints":[{"name":"Primary Key","type":"Partition key and sort key","def":"[{ AttributeName: \"Id\", KeyType: \"HASH\" } { AttributeName: \"ReplyDateTime\", KeyType: \"RANGE\" }]","table":null,"columns":["Id","ReplyDateTime"]}]},{"name":"Thread","type":"BASIC TABLE","columns":[{"name":"ForumName","type":"S","nullable":false},{"name":"Subject","type":"S","nullable":false}],"constraints":[{"name":"Primary Key","type":"Partition key and sort key","def":"[{ AttributeName: \"ForumName\", KeyType: \"HASH\" } { AttributeName: \"Subject\", KeyType: \"RANGE\" }]","table":null,"columns":["ForumName","Subject"]}]}],"relations":[{"table":"Thread","columns":["ForumName"],"cardinality":"zero_or_more","parent_table":"Forum","parent_columns":["Name"],"parent_cardinality":"exactly_one","def":"Thread-\u003eForum","virtual":true}],"driver":{"name":"dynamodb","meta":{"dict":{"Column":"Attribute","Columns":"Attributes","Constraints":"Primary Key","Indexes":"Secondary Indexes"}}}}

sample/exclude/schema.json

+1-1
Large diffs are not rendered by default.

sample/font/schema.json

+1-1
Large diffs are not rendered by default.

sample/hide/schema.json

+1-1
Large diffs are not rendered by default.

sample/hide_not_related_column/schema.json

+1-1
Large diffs are not rendered by default.

sample/mariadb/schema.json

+1-1
Large diffs are not rendered by default.

sample/mermaid/schema.json

+1-1
Large diffs are not rendered by default.

sample/mssql/schema.json

+1-1
Large diffs are not rendered by default.

sample/mysql/schema.json

+1-1
Large diffs are not rendered by default.

sample/mysql56/schema.json

+1-1
Large diffs are not rendered by default.

sample/number/schema.json

+1-1
Large diffs are not rendered by default.

sample/png/schema.json

+1-1
Large diffs are not rendered by default.

sample/postgres/schema.json

+1-1
Large diffs are not rendered by default.

sample/postgres95/schema.json

+1-1
Large diffs are not rendered by default.

sample/sqlite/schema.json

+1-1
Large diffs are not rendered by default.

sample/viewpoints/schema.json

+1-1
Large diffs are not rendered by default.

schema/json.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ type ColumnJSON struct {
3636
Name string `json:"name"`
3737
Type string `json:"type"`
3838
Nullable bool `json:"nullable"`
39-
Default *string `json:"default,omitempty"`
39+
Default *string `json:"default,omitempty" jsonschema:"anyof_type=string;null"`
4040
ExtraDef string `json:"extra_def,omitempty"`
4141
Labels Labels `json:"labels,omitempty"`
4242
Comment string `json:"comment,omitempty"`
@@ -46,10 +46,10 @@ type ColumnJSON struct {
4646
type RelationJSON struct {
4747
Table string `json:"table"`
4848
Columns []string `json:"columns"`
49-
Cardinality string `json:"cardinality,omitempty"`
49+
Cardinality string `json:"cardinality,omitempty" jsonschema:"enum=zero_or_one,enum=exactly_one,enum=zero_or_more,enum=one_or_more,enum="`
5050
ParentTable string `json:"parent_table"`
5151
ParentColumns []string `json:"parent_columns"`
52-
ParentCardinality string `json:"parent_cardinality,omitempty"`
52+
ParentCardinality string `json:"parent_cardinality,omitempty" jsonschema:"enum=zero_or_one,enum=exactly_one,enum=zero_or_more,enum=one_or_more,enum="`
5353
Def string `json:"def"`
5454
Virtual bool `json:"virtual,omitempty"`
5555
}

scripts/jsonschema/main.go

+5
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ import (
44
"encoding/json"
55
"fmt"
66
"os"
7+
"reflect"
8+
"strings"
79

810
"github.com/iancoleman/strcase"
911
"github.com/invopop/jsonschema"
@@ -19,6 +21,9 @@ func main() {
1921

2022
func _main() error {
2123
r := new(jsonschema.Reflector)
24+
r.Namer = func(t reflect.Type) string {
25+
return strings.TrimSuffix(t.Name(), "JSON")
26+
}
2227
r.KeyNamer = strcase.ToSnake
2328
s := r.Reflect(&schema.SchemaJSON{})
2429
b, err := json.MarshalIndent(s, "", " ")

testdata/json_output_schema.golden

+2-2
Original file line numberDiff line numberDiff line change
@@ -107,12 +107,12 @@
107107
"columns": [
108108
"b"
109109
],
110-
"cardinality": "One or more",
110+
"cardinality": "one_or_more",
111111
"parent_table": "a",
112112
"parent_columns": [
113113
"a"
114114
],
115-
"parent_cardinality": "Exactly one",
115+
"parent_cardinality": "exactly_one",
116116
"def": "FOREIGN KEY (b) REFERENCES a(a)"
117117
}
118118
],

testdata/modify_schema_.golden

+6-6
Original file line numberDiff line numberDiff line change
@@ -297,38 +297,38 @@
297297
"columns": [
298298
"category_id"
299299
],
300-
"cardinality": "Zero or more",
300+
"cardinality": "zero_or_more",
301301
"parent_table": "categories",
302302
"parent_columns": [
303303
"id"
304304
],
305-
"parent_cardinality": "Exactly one",
305+
"parent_cardinality": "exactly_one",
306306
"def": "FOREIGN KEY (category_id) REFERENCES categories (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
307307
},
308308
{
309309
"table": "posts",
310310
"columns": [
311311
"user_id"
312312
],
313-
"cardinality": "Zero or more",
313+
"cardinality": "zero_or_more",
314314
"parent_table": "users",
315315
"parent_columns": [
316316
"id"
317317
],
318-
"parent_cardinality": "Exactly one",
318+
"parent_cardinality": "exactly_one",
319319
"def": "FOREIGN KEY (user_id) REFERENCES users (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
320320
},
321321
{
322322
"table": "user_options",
323323
"columns": [
324324
"user_id"
325325
],
326-
"cardinality": "Zero or more",
326+
"cardinality": "zero_or_more",
327327
"parent_table": "users",
328328
"parent_columns": [
329329
"id"
330330
],
331-
"parent_cardinality": "Exactly one",
331+
"parent_cardinality": "exactly_one",
332332
"def": "FOREIGN KEY (user_id) REFERENCES users (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
333333
}
334334
],

testdata/modify_schema_mod_name_and_desc.golden

+6-6
Original file line numberDiff line numberDiff line change
@@ -298,38 +298,38 @@
298298
"columns": [
299299
"category_id"
300300
],
301-
"cardinality": "Zero or more",
301+
"cardinality": "zero_or_more",
302302
"parent_table": "categories",
303303
"parent_columns": [
304304
"id"
305305
],
306-
"parent_cardinality": "Exactly one",
306+
"parent_cardinality": "exactly_one",
307307
"def": "FOREIGN KEY (category_id) REFERENCES categories (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
308308
},
309309
{
310310
"table": "posts",
311311
"columns": [
312312
"user_id"
313313
],
314-
"cardinality": "Zero or more",
314+
"cardinality": "zero_or_more",
315315
"parent_table": "users",
316316
"parent_columns": [
317317
"id"
318318
],
319-
"parent_cardinality": "Exactly one",
319+
"parent_cardinality": "exactly_one",
320320
"def": "FOREIGN KEY (user_id) REFERENCES users (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
321321
},
322322
{
323323
"table": "user_options",
324324
"columns": [
325325
"user_id"
326326
],
327-
"cardinality": "Zero or more",
327+
"cardinality": "zero_or_more",
328328
"parent_table": "users",
329329
"parent_columns": [
330330
"id"
331331
],
332-
"parent_cardinality": "Exactly one",
332+
"parent_cardinality": "exactly_one",
333333
"def": "FOREIGN KEY (user_id) REFERENCES users (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
334334
}
335335
],

testdata/modify_schema_not_override.golden

+8-8
Original file line numberDiff line numberDiff line change
@@ -297,51 +297,51 @@
297297
"columns": [
298298
"category_id"
299299
],
300-
"cardinality": "Zero or more",
300+
"cardinality": "zero_or_more",
301301
"parent_table": "categories",
302302
"parent_columns": [
303303
"id"
304304
],
305-
"parent_cardinality": "Exactly one",
305+
"parent_cardinality": "exactly_one",
306306
"def": "FOREIGN KEY (category_id) REFERENCES categories (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
307307
},
308308
{
309309
"table": "posts",
310310
"columns": [
311311
"user_id"
312312
],
313-
"cardinality": "Zero or more",
313+
"cardinality": "zero_or_more",
314314
"parent_table": "users",
315315
"parent_columns": [
316316
"id"
317317
],
318-
"parent_cardinality": "Exactly one",
318+
"parent_cardinality": "exactly_one",
319319
"def": "FOREIGN KEY (user_id) REFERENCES users (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
320320
},
321321
{
322322
"table": "user_options",
323323
"columns": [
324324
"user_id"
325325
],
326-
"cardinality": "Zero or more",
326+
"cardinality": "zero_or_more",
327327
"parent_table": "users",
328328
"parent_columns": [
329329
"id"
330330
],
331-
"parent_cardinality": "Exactly one",
331+
"parent_cardinality": "exactly_one",
332332
"def": "FOREIGN KEY (user_id) REFERENCES users (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
333333
},
334334
{
335335
"table": "users",
336336
"columns": [
337337
"id"
338338
],
339-
"cardinality": "Zero or one",
339+
"cardinality": "zero_or_one",
340340
"parent_table": "posts",
341341
"parent_columns": [
342342
"user_id"
343343
],
344-
"parent_cardinality": "Exactly one",
344+
"parent_cardinality": "exactly_one",
345345
"def": "Additional Relation",
346346
"virtual": true
347347
}

testdata/modify_schema_override.golden

+6-6
Original file line numberDiff line numberDiff line change
@@ -297,25 +297,25 @@
297297
"columns": [
298298
"category_id"
299299
],
300-
"cardinality": "Zero or more",
300+
"cardinality": "zero_or_more",
301301
"parent_table": "categories",
302302
"parent_columns": [
303303
"id"
304304
],
305-
"parent_cardinality": "Exactly one",
305+
"parent_cardinality": "exactly_one",
306306
"def": "FOREIGN KEY (category_id) REFERENCES categories (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
307307
},
308308
{
309309
"table": "posts",
310310
"columns": [
311311
"user_id"
312312
],
313-
"cardinality": "Zero or one",
313+
"cardinality": "zero_or_one",
314314
"parent_table": "users",
315315
"parent_columns": [
316316
"id"
317317
],
318-
"parent_cardinality": "One or more",
318+
"parent_cardinality": "one_or_more",
319319
"def": "Override Relation",
320320
"virtual": true
321321
},
@@ -324,12 +324,12 @@
324324
"columns": [
325325
"user_id"
326326
],
327-
"cardinality": "Zero or more",
327+
"cardinality": "zero_or_more",
328328
"parent_table": "users",
329329
"parent_columns": [
330330
"id"
331331
],
332-
"parent_cardinality": "Exactly one",
332+
"parent_cardinality": "exactly_one",
333333
"def": "FOREIGN KEY (user_id) REFERENCES users (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
334334
}
335335
],

testdata/modify_schema_relations.golden

+8-8
Original file line numberDiff line numberDiff line change
@@ -297,51 +297,51 @@
297297
"columns": [
298298
"category_id"
299299
],
300-
"cardinality": "Zero or more",
300+
"cardinality": "zero_or_more",
301301
"parent_table": "categories",
302302
"parent_columns": [
303303
"id"
304304
],
305-
"parent_cardinality": "Exactly one",
305+
"parent_cardinality": "exactly_one",
306306
"def": "FOREIGN KEY (category_id) REFERENCES categories (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
307307
},
308308
{
309309
"table": "posts",
310310
"columns": [
311311
"user_id"
312312
],
313-
"cardinality": "Zero or more",
313+
"cardinality": "zero_or_more",
314314
"parent_table": "users",
315315
"parent_columns": [
316316
"id"
317317
],
318-
"parent_cardinality": "Exactly one",
318+
"parent_cardinality": "exactly_one",
319319
"def": "FOREIGN KEY (user_id) REFERENCES users (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
320320
},
321321
{
322322
"table": "user_options",
323323
"columns": [
324324
"user_id"
325325
],
326-
"cardinality": "Zero or more",
326+
"cardinality": "zero_or_more",
327327
"parent_table": "users",
328328
"parent_columns": [
329329
"id"
330330
],
331-
"parent_cardinality": "Exactly one",
331+
"parent_cardinality": "exactly_one",
332332
"def": "FOREIGN KEY (user_id) REFERENCES users (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
333333
},
334334
{
335335
"table": "users",
336336
"columns": [
337337
"id"
338338
],
339-
"cardinality": "Zero or one",
339+
"cardinality": "zero_or_one",
340340
"parent_table": "categories",
341341
"parent_columns": [
342342
"id"
343343
],
344-
"parent_cardinality": "Exactly one",
344+
"parent_cardinality": "exactly_one",
345345
"def": "Additional Relation",
346346
"virtual": true
347347
}

testdata/yaml_output_schema.golden

+2-2
Original file line numberDiff line numberDiff line change
@@ -63,11 +63,11 @@ relations:
6363
- table: b
6464
columns:
6565
- b
66-
cardinality: One or more
66+
cardinality: one_or_more
6767
parentTable: a
6868
parentColumns:
6969
- a
70-
parentCardinality: Exactly one
70+
parentCardinality: exactly_one
7171
def: FOREIGN KEY (b) REFERENCES a(a)
7272
virtual: false
7373
enums:

0 commit comments

Comments
 (0)