Skip to content

Commit 262d866

Browse files
authored
Merge pull request #451 from sirmackan/master
DefaultColumns() helper on Table
2 parents e5fcf35 + 0b664c6 commit 262d866

File tree

9 files changed

+51
-4
lines changed

9 files changed

+51
-4
lines changed

generator/metadata/table_meta_data.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,16 @@ func (t Table) MutableColumns() []Column {
2121

2222
return ret
2323
}
24+
25+
// DefaultColumns returns list of columns with default values set for table
26+
func (t Table) DefaultColumns() []Column {
27+
var ret []Column
28+
29+
for _, column := range t.Columns {
30+
if column.HasDefault {
31+
ret = append(ret, column)
32+
}
33+
}
34+
35+
return ret
36+
}

generator/mysql/query_set.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ func (m mySqlQuerySet) GetTablesMetaData(db *sql.DB, schemaName string, tableTyp
1818
SELECT
1919
t.table_name as "table.name",
2020
col.COLUMN_NAME AS "column.Name",
21-
col.COLUMN_DEFAULT IS NOT NULL as "column.HasDefault",
21+
col.COLUMN_DEFAULT IS NOT NULL AND t.table_type != 'VIEW' as "column.HasDefault",
2222
col.IS_NULLABLE = "YES" AS "column.IsNullable",
2323
col.COLUMN_COMMENT AS "column.Comment",
2424
COALESCE(pk.IsPrimaryKey, 0) AS "column.IsPrimaryKey",

generator/template/file_templates.go

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

generator/template/sql_builder_template.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ type TableSQLBuilderColumn struct {
136136
Type string
137137
}
138138

139-
var reservedKeywords = []string{"TableName", "Table", "SchemaName", "Alias", "AllColumns", "MutableColumns"}
139+
var reservedKeywords = []string{"TableName", "Table", "SchemaName", "Alias", "AllColumns", "MutableColumns", "DefaultColumns"}
140140

141141
func renameIfReserved(name string) string {
142142
if slices.Contains(reservedKeywords, name) {

generator/template/sql_builder_template_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ func TestColumnRenameReserved(t *testing.T) {
2222
{col: "Alias", want: "Alias_"},
2323
{col: "AllColumns", want: "AllColumns_"},
2424
{col: "MutableColumns", want: "MutableColumns_"},
25+
{col: "DefaultColumns", want: "DefaultColumns_"},
2526
{col: "OtherColumn", want: "OtherColumn"},
2627
}
2728

tests/Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ checkout-latest-testdata: checkout-testdata
1414
# database with testdata retrieved in previous step.
1515
# On the first run this action might take couple of minutes. Docker temp data are stored in .docker directory.
1616
docker-compose-up:
17-
docker-compose up
17+
docker compose up
1818

1919
init-all:
2020
go run ./init/init.go -testsuite all
@@ -74,4 +74,4 @@ jet-gen-cockroach:
7474

7575
# docker-compose-cleanup will stop and remove test containers, volumes, and images.
7676
cleanup:
77-
docker-compose down --volumes
77+
docker compose down --volumes

tests/mysql/generator_test.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -260,6 +260,7 @@ type linkTable struct {
260260
261261
AllColumns mysql.ColumnList
262262
MutableColumns mysql.ColumnList
263+
DefaultColumns mysql.ColumnList
263264
}
264265
265266
type LinkTable struct {
@@ -303,6 +304,7 @@ func newLinkTableImpl(schemaName, tableName, alias string) linkTable {
303304
DescriptionColumn = mysql.StringColumn("description")
304305
allColumns = mysql.ColumnList{IDColumn, URLColumn, NameColumn, DescriptionColumn}
305306
mutableColumns = mysql.ColumnList{URLColumn, NameColumn, DescriptionColumn}
307+
defaultColumns = mysql.ColumnList{DescriptionColumn}
306308
)
307309
308310
return linkTable{
@@ -316,6 +318,7 @@ func newLinkTableImpl(schemaName, tableName, alias string) linkTable {
316318
317319
AllColumns: allColumns,
318320
MutableColumns: mutableColumns,
321+
DefaultColumns: defaultColumns,
319322
}
320323
}
321324
`)
@@ -375,6 +378,7 @@ type actorTable struct {
375378
376379
AllColumns mysql.ColumnList
377380
MutableColumns mysql.ColumnList
381+
DefaultColumns mysql.ColumnList
378382
}
379383
380384
type ActorTable struct {
@@ -418,6 +422,7 @@ func newActorTableImpl(schemaName, tableName, alias string) actorTable {
418422
LastUpdateColumn = mysql.TimestampColumn("last_update")
419423
allColumns = mysql.ColumnList{ActorIDColumn, FirstNameColumn, LastNameColumn, LastUpdateColumn}
420424
mutableColumns = mysql.ColumnList{FirstNameColumn, LastNameColumn, LastUpdateColumn}
425+
defaultColumns = mysql.ColumnList{LastUpdateColumn}
421426
)
422427
423428
return actorTable{
@@ -431,6 +436,7 @@ func newActorTableImpl(schemaName, tableName, alias string) actorTable {
431436
432437
AllColumns: allColumns,
433438
MutableColumns: mutableColumns,
439+
DefaultColumns: defaultColumns,
434440
}
435441
}
436442
`
@@ -516,6 +522,7 @@ type actorInfoTable struct {
516522
517523
AllColumns mysql.ColumnList
518524
MutableColumns mysql.ColumnList
525+
DefaultColumns mysql.ColumnList
519526
}
520527
521528
type ActorInfoTable struct {
@@ -559,6 +566,7 @@ func newActorInfoTableImpl(schemaName, tableName, alias string) actorInfoTable {
559566
FilmInfoColumn = mysql.StringColumn("film_info")
560567
allColumns = mysql.ColumnList{ActorIDColumn, FirstNameColumn, LastNameColumn, FilmInfoColumn}
561568
mutableColumns = mysql.ColumnList{ActorIDColumn, FirstNameColumn, LastNameColumn, FilmInfoColumn}
569+
defaultColumns = mysql.ColumnList{}
562570
)
563571
564572
return actorInfoTable{
@@ -572,6 +580,7 @@ func newActorInfoTableImpl(schemaName, tableName, alias string) actorInfoTable {
572580
573581
AllColumns: allColumns,
574582
MutableColumns: mutableColumns,
583+
DefaultColumns: defaultColumns,
575584
}
576585
}
577586
`

tests/postgres/generator_test.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -520,6 +520,7 @@ type actorTable struct {
520520
521521
AllColumns postgres.ColumnList
522522
MutableColumns postgres.ColumnList
523+
DefaultColumns postgres.ColumnList
523524
}
524525
525526
type ActorTable struct {
@@ -563,6 +564,7 @@ func newActorTableImpl(schemaName, tableName, alias string) actorTable {
563564
LastUpdateColumn = postgres.TimestampColumn("last_update")
564565
allColumns = postgres.ColumnList{ActorIDColumn, FirstNameColumn, LastNameColumn, LastUpdateColumn}
565566
mutableColumns = postgres.ColumnList{FirstNameColumn, LastNameColumn, LastUpdateColumn}
567+
defaultColumns = postgres.ColumnList{ActorIDColumn}
566568
)
567569
568570
return actorTable{
@@ -576,6 +578,7 @@ func newActorTableImpl(schemaName, tableName, alias string) actorTable {
576578
577579
AllColumns: allColumns,
578580
MutableColumns: mutableColumns,
581+
DefaultColumns: defaultColumns,
579582
}
580583
}
581584
`
@@ -660,6 +663,7 @@ type actorInfoTable struct {
660663
661664
AllColumns postgres.ColumnList
662665
MutableColumns postgres.ColumnList
666+
DefaultColumns postgres.ColumnList
663667
}
664668
665669
type ActorInfoTable struct {
@@ -703,6 +707,7 @@ func newActorInfoTableImpl(schemaName, tableName, alias string) actorInfoTable {
703707
FilmInfoColumn = postgres.StringColumn("film_info")
704708
allColumns = postgres.ColumnList{ActorIDColumn, FirstNameColumn, LastNameColumn, FilmInfoColumn}
705709
mutableColumns = postgres.ColumnList{ActorIDColumn, FirstNameColumn, LastNameColumn, FilmInfoColumn}
710+
defaultColumns = postgres.ColumnList{}
706711
)
707712
708713
return actorInfoTable{
@@ -716,6 +721,7 @@ func newActorInfoTableImpl(schemaName, tableName, alias string) actorInfoTable {
716721
717722
AllColumns: allColumns,
718723
MutableColumns: mutableColumns,
724+
DefaultColumns: defaultColumns,
719725
}
720726
}
721727
`
@@ -1011,6 +1017,7 @@ type allTypesTable struct {
10111017
10121018
AllColumns postgres.ColumnList
10131019
MutableColumns postgres.ColumnList
1020+
DefaultColumns postgres.ColumnList
10141021
}
10151022
10161023
type AllTypesTable struct {
@@ -1113,6 +1120,7 @@ func newAllTypesTableImpl(schemaName, tableName, alias string) allTypesTable {
11131120
MoodColumn = postgres.StringColumn("mood")
11141121
allColumns = postgres.ColumnList{SmallIntPtrColumn, SmallIntColumn, IntegerPtrColumn, IntegerColumn, BigIntPtrColumn, BigIntColumn, DecimalPtrColumn, DecimalColumn, NumericPtrColumn, NumericColumn, RealPtrColumn, RealColumn, DoublePrecisionPtrColumn, DoublePrecisionColumn, SmallserialColumn, SerialColumn, BigserialColumn, VarCharPtrColumn, VarCharColumn, CharPtrColumn, CharColumn, TextPtrColumn, TextColumn, ByteaPtrColumn, ByteaColumn, TimestampzPtrColumn, TimestampzColumn, TimestampPtrColumn, TimestampColumn, DatePtrColumn, DateColumn, TimezPtrColumn, TimezColumn, TimePtrColumn, TimeColumn, IntervalPtrColumn, IntervalColumn, BooleanPtrColumn, BooleanColumn, PointPtrColumn, BitPtrColumn, BitColumn, BitVaryingPtrColumn, BitVaryingColumn, TsvectorPtrColumn, TsvectorColumn, UUIDPtrColumn, UUIDColumn, XMLPtrColumn, XMLColumn, JSONPtrColumn, JSONColumn, JsonbPtrColumn, JsonbColumn, IntegerArrayPtrColumn, IntegerArrayColumn, TextArrayPtrColumn, TextArrayColumn, JsonbArrayColumn, TextMultiDimArrayPtrColumn, TextMultiDimArrayColumn, MoodPtrColumn, MoodColumn}
11151122
mutableColumns = postgres.ColumnList{SmallIntPtrColumn, SmallIntColumn, IntegerPtrColumn, IntegerColumn, BigIntPtrColumn, BigIntColumn, DecimalPtrColumn, DecimalColumn, NumericPtrColumn, NumericColumn, RealPtrColumn, RealColumn, DoublePrecisionPtrColumn, DoublePrecisionColumn, SmallserialColumn, SerialColumn, BigserialColumn, VarCharPtrColumn, VarCharColumn, CharPtrColumn, CharColumn, TextPtrColumn, TextColumn, ByteaPtrColumn, ByteaColumn, TimestampzPtrColumn, TimestampzColumn, TimestampPtrColumn, TimestampColumn, DatePtrColumn, DateColumn, TimezPtrColumn, TimezColumn, TimePtrColumn, TimeColumn, IntervalPtrColumn, IntervalColumn, BooleanPtrColumn, BooleanColumn, PointPtrColumn, BitPtrColumn, BitColumn, BitVaryingPtrColumn, BitVaryingColumn, TsvectorPtrColumn, TsvectorColumn, UUIDPtrColumn, UUIDColumn, XMLPtrColumn, XMLColumn, JSONPtrColumn, JSONColumn, JsonbPtrColumn, JsonbColumn, IntegerArrayPtrColumn, IntegerArrayColumn, TextArrayPtrColumn, TextArrayColumn, JsonbArrayColumn, TextMultiDimArrayPtrColumn, TextMultiDimArrayColumn, MoodPtrColumn, MoodColumn}
1123+
defaultColumns = postgres.ColumnList{SmallIntColumn, IntegerColumn, BigIntColumn, DecimalColumn, NumericColumn, RealColumn, DoublePrecisionColumn, SmallserialColumn, SerialColumn, BigserialColumn, VarCharColumn, CharColumn, TextColumn, ByteaColumn, TimestampzColumn, TimestampColumn, DateColumn, TimezColumn, TimeColumn, IntervalColumn, BooleanColumn, BitColumn, BitVaryingColumn, TsvectorColumn, UUIDColumn, XMLColumn, JSONColumn, JsonbColumn, IntegerArrayColumn, TextArrayColumn, JsonbArrayColumn, TextMultiDimArrayColumn, MoodColumn}
11161124
)
11171125
11181126
return allTypesTable{
@@ -1185,6 +1193,7 @@ func newAllTypesTableImpl(schemaName, tableName, alias string) allTypesTable {
11851193
11861194
AllColumns: allColumns,
11871195
MutableColumns: mutableColumns,
1196+
DefaultColumns: defaultColumns,
11881197
}
11891198
}
11901199
`
@@ -1218,6 +1227,7 @@ type sampleRangesTable struct {
12181227
12191228
AllColumns postgres.ColumnList
12201229
MutableColumns postgres.ColumnList
1230+
DefaultColumns postgres.ColumnList
12211231
}
12221232
12231233
type SampleRangesTable struct {
@@ -1263,6 +1273,7 @@ func newSampleRangesTableImpl(schemaName, tableName, alias string) sampleRangesT
12631273
NumRangeColumn = postgres.NumericRangeColumn("num_range")
12641274
allColumns = postgres.ColumnList{DateRangeColumn, TimestampRangeColumn, TimestampzRangeColumn, Int4RangeColumn, Int8RangeColumn, NumRangeColumn}
12651275
mutableColumns = postgres.ColumnList{DateRangeColumn, TimestampRangeColumn, TimestampzRangeColumn, Int4RangeColumn, Int8RangeColumn, NumRangeColumn}
1276+
defaultColumns = postgres.ColumnList{DateRangeColumn, TimestampRangeColumn, TimestampzRangeColumn, Int4RangeColumn, Int8RangeColumn, NumRangeColumn}
12661277
)
12671278
12681279
return sampleRangesTable{
@@ -1278,6 +1289,7 @@ func newSampleRangesTableImpl(schemaName, tableName, alias string) sampleRangesT
12781289
12791290
AllColumns: allColumns,
12801291
MutableColumns: mutableColumns,
1292+
DefaultColumns: defaultColumns,
12811293
}
12821294
}
12831295
`
@@ -1310,6 +1322,7 @@ type linkTable struct {
13101322
13111323
AllColumns postgres.ColumnList
13121324
MutableColumns postgres.ColumnList
1325+
DefaultColumns postgres.ColumnList
13131326
}
13141327
13151328
type LinkTable struct {
@@ -1353,6 +1366,7 @@ func newLinkTableImpl(schemaName, tableName, alias string) linkTable {
13531366
DescriptionColumn = postgres.StringColumn("description")
13541367
allColumns = postgres.ColumnList{IDColumn, URLColumn, NameColumn, DescriptionColumn}
13551368
mutableColumns = postgres.ColumnList{URLColumn, NameColumn, DescriptionColumn}
1369+
defaultColumns = postgres.ColumnList{IDColumn}
13561370
)
13571371
13581372
return linkTable{
@@ -1366,6 +1380,7 @@ func newLinkTableImpl(schemaName, tableName, alias string) linkTable {
13661380
13671381
AllColumns: allColumns,
13681382
MutableColumns: mutableColumns,
1383+
DefaultColumns: defaultColumns,
13691384
}
13701385
}
13711386
`

tests/sqlite/generator_test.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,7 @@ type actorTable struct {
185185
186186
AllColumns sqlite.ColumnList
187187
MutableColumns sqlite.ColumnList
188+
DefaultColumns sqlite.ColumnList
188189
}
189190
190191
type ActorTable struct {
@@ -228,6 +229,7 @@ func newActorTableImpl(schemaName, tableName, alias string) actorTable {
228229
LastUpdateColumn = sqlite.TimestampColumn("last_update")
229230
allColumns = sqlite.ColumnList{ActorIDColumn, FirstNameColumn, LastNameColumn, LastUpdateColumn}
230231
mutableColumns = sqlite.ColumnList{FirstNameColumn, LastNameColumn, LastUpdateColumn}
232+
defaultColumns = sqlite.ColumnList{LastUpdateColumn}
231233
)
232234
233235
return actorTable{
@@ -241,6 +243,7 @@ func newActorTableImpl(schemaName, tableName, alias string) actorTable {
241243
242244
AllColumns: allColumns,
243245
MutableColumns: mutableColumns,
246+
DefaultColumns: defaultColumns,
244247
}
245248
}
246249
`
@@ -307,6 +310,7 @@ type filmListTable struct {
307310
308311
AllColumns sqlite.ColumnList
309312
MutableColumns sqlite.ColumnList
313+
DefaultColumns sqlite.ColumnList
310314
}
311315
312316
type FilmListTable struct {
@@ -354,6 +358,7 @@ func newFilmListTableImpl(schemaName, tableName, alias string) filmListTable {
354358
ActorsColumn = sqlite.StringColumn("actors")
355359
allColumns = sqlite.ColumnList{FidColumn, TitleColumn, DescriptionColumn, CategoryColumn, PriceColumn, LengthColumn, RatingColumn, ActorsColumn}
356360
mutableColumns = sqlite.ColumnList{FidColumn, TitleColumn, DescriptionColumn, CategoryColumn, PriceColumn, LengthColumn, RatingColumn, ActorsColumn}
361+
defaultColumns = sqlite.ColumnList{}
357362
)
358363
359364
return filmListTable{
@@ -371,6 +376,7 @@ func newFilmListTableImpl(schemaName, tableName, alias string) filmListTable {
371376
372377
AllColumns: allColumns,
373378
MutableColumns: mutableColumns,
379+
DefaultColumns: defaultColumns,
374380
}
375381
}
376382
`

0 commit comments

Comments
 (0)