Merge pull request #451 from sirmackan/master
DefaultColumns() helper on Table
This commit is contained in:
commit
262d866a4a
9 changed files with 51 additions and 4 deletions
|
|
@ -21,3 +21,16 @@ func (t Table) MutableColumns() []Column {
|
|||
|
||||
return ret
|
||||
}
|
||||
|
||||
// DefaultColumns returns list of columns with default values set for table
|
||||
func (t Table) DefaultColumns() []Column {
|
||||
var ret []Column
|
||||
|
||||
for _, column := range t.Columns {
|
||||
if column.HasDefault {
|
||||
ret = append(ret, column)
|
||||
}
|
||||
}
|
||||
|
||||
return ret
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ func (m mySqlQuerySet) GetTablesMetaData(db *sql.DB, schemaName string, tableTyp
|
|||
SELECT
|
||||
t.table_name as "table.name",
|
||||
col.COLUMN_NAME AS "column.Name",
|
||||
col.COLUMN_DEFAULT IS NOT NULL as "column.HasDefault",
|
||||
col.COLUMN_DEFAULT IS NOT NULL AND t.table_type != 'VIEW' as "column.HasDefault",
|
||||
col.IS_NULLABLE = "YES" AS "column.IsNullable",
|
||||
col.COLUMN_COMMENT AS "column.Comment",
|
||||
COALESCE(pk.IsPrimaryKey, 0) AS "column.IsPrimaryKey",
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@ type {{structImplName}} struct {
|
|||
|
||||
AllColumns {{dialect.PackageName}}.ColumnList
|
||||
MutableColumns {{dialect.PackageName}}.ColumnList
|
||||
DefaultColumns {{dialect.PackageName}}.ColumnList
|
||||
}
|
||||
|
||||
type {{tableTemplate.TypeName}} struct {
|
||||
|
|
@ -78,6 +79,7 @@ func new{{tableTemplate.TypeName}}Impl(schemaName, tableName, alias string) {{st
|
|||
{{- end}}
|
||||
allColumns = {{dialect.PackageName}}.ColumnList{ {{columnList .Columns}} }
|
||||
mutableColumns = {{dialect.PackageName}}.ColumnList{ {{columnList .MutableColumns}} }
|
||||
defaultColumns = {{dialect.PackageName}}.ColumnList{ {{columnList .DefaultColumns}} }
|
||||
)
|
||||
|
||||
return {{structImplName}}{
|
||||
|
|
@ -93,6 +95,7 @@ func new{{tableTemplate.TypeName}}Impl(schemaName, tableName, alias string) {{st
|
|||
|
||||
AllColumns: allColumns,
|
||||
MutableColumns: mutableColumns,
|
||||
DefaultColumns: defaultColumns,
|
||||
}
|
||||
}
|
||||
`
|
||||
|
|
|
|||
|
|
@ -136,7 +136,7 @@ type TableSQLBuilderColumn struct {
|
|||
Type string
|
||||
}
|
||||
|
||||
var reservedKeywords = []string{"TableName", "Table", "SchemaName", "Alias", "AllColumns", "MutableColumns"}
|
||||
var reservedKeywords = []string{"TableName", "Table", "SchemaName", "Alias", "AllColumns", "MutableColumns", "DefaultColumns"}
|
||||
|
||||
func renameIfReserved(name string) string {
|
||||
if slices.Contains(reservedKeywords, name) {
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@ func TestColumnRenameReserved(t *testing.T) {
|
|||
{col: "Alias", want: "Alias_"},
|
||||
{col: "AllColumns", want: "AllColumns_"},
|
||||
{col: "MutableColumns", want: "MutableColumns_"},
|
||||
{col: "DefaultColumns", want: "DefaultColumns_"},
|
||||
{col: "OtherColumn", want: "OtherColumn"},
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ checkout-latest-testdata: checkout-testdata
|
|||
# database with testdata retrieved in previous step.
|
||||
# On the first run this action might take couple of minutes. Docker temp data are stored in .docker directory.
|
||||
docker-compose-up:
|
||||
docker-compose up
|
||||
docker compose up
|
||||
|
||||
init-all:
|
||||
go run ./init/init.go -testsuite all
|
||||
|
|
@ -74,4 +74,4 @@ jet-gen-cockroach:
|
|||
|
||||
# docker-compose-cleanup will stop and remove test containers, volumes, and images.
|
||||
cleanup:
|
||||
docker-compose down --volumes
|
||||
docker compose down --volumes
|
||||
|
|
|
|||
|
|
@ -260,6 +260,7 @@ type linkTable struct {
|
|||
|
||||
AllColumns mysql.ColumnList
|
||||
MutableColumns mysql.ColumnList
|
||||
DefaultColumns mysql.ColumnList
|
||||
}
|
||||
|
||||
type LinkTable struct {
|
||||
|
|
@ -303,6 +304,7 @@ func newLinkTableImpl(schemaName, tableName, alias string) linkTable {
|
|||
DescriptionColumn = mysql.StringColumn("description")
|
||||
allColumns = mysql.ColumnList{IDColumn, URLColumn, NameColumn, DescriptionColumn}
|
||||
mutableColumns = mysql.ColumnList{URLColumn, NameColumn, DescriptionColumn}
|
||||
defaultColumns = mysql.ColumnList{DescriptionColumn}
|
||||
)
|
||||
|
||||
return linkTable{
|
||||
|
|
@ -316,6 +318,7 @@ func newLinkTableImpl(schemaName, tableName, alias string) linkTable {
|
|||
|
||||
AllColumns: allColumns,
|
||||
MutableColumns: mutableColumns,
|
||||
DefaultColumns: defaultColumns,
|
||||
}
|
||||
}
|
||||
`)
|
||||
|
|
@ -375,6 +378,7 @@ type actorTable struct {
|
|||
|
||||
AllColumns mysql.ColumnList
|
||||
MutableColumns mysql.ColumnList
|
||||
DefaultColumns mysql.ColumnList
|
||||
}
|
||||
|
||||
type ActorTable struct {
|
||||
|
|
@ -418,6 +422,7 @@ func newActorTableImpl(schemaName, tableName, alias string) actorTable {
|
|||
LastUpdateColumn = mysql.TimestampColumn("last_update")
|
||||
allColumns = mysql.ColumnList{ActorIDColumn, FirstNameColumn, LastNameColumn, LastUpdateColumn}
|
||||
mutableColumns = mysql.ColumnList{FirstNameColumn, LastNameColumn, LastUpdateColumn}
|
||||
defaultColumns = mysql.ColumnList{LastUpdateColumn}
|
||||
)
|
||||
|
||||
return actorTable{
|
||||
|
|
@ -431,6 +436,7 @@ func newActorTableImpl(schemaName, tableName, alias string) actorTable {
|
|||
|
||||
AllColumns: allColumns,
|
||||
MutableColumns: mutableColumns,
|
||||
DefaultColumns: defaultColumns,
|
||||
}
|
||||
}
|
||||
`
|
||||
|
|
@ -516,6 +522,7 @@ type actorInfoTable struct {
|
|||
|
||||
AllColumns mysql.ColumnList
|
||||
MutableColumns mysql.ColumnList
|
||||
DefaultColumns mysql.ColumnList
|
||||
}
|
||||
|
||||
type ActorInfoTable struct {
|
||||
|
|
@ -559,6 +566,7 @@ func newActorInfoTableImpl(schemaName, tableName, alias string) actorInfoTable {
|
|||
FilmInfoColumn = mysql.StringColumn("film_info")
|
||||
allColumns = mysql.ColumnList{ActorIDColumn, FirstNameColumn, LastNameColumn, FilmInfoColumn}
|
||||
mutableColumns = mysql.ColumnList{ActorIDColumn, FirstNameColumn, LastNameColumn, FilmInfoColumn}
|
||||
defaultColumns = mysql.ColumnList{}
|
||||
)
|
||||
|
||||
return actorInfoTable{
|
||||
|
|
@ -572,6 +580,7 @@ func newActorInfoTableImpl(schemaName, tableName, alias string) actorInfoTable {
|
|||
|
||||
AllColumns: allColumns,
|
||||
MutableColumns: mutableColumns,
|
||||
DefaultColumns: defaultColumns,
|
||||
}
|
||||
}
|
||||
`
|
||||
|
|
|
|||
|
|
@ -520,6 +520,7 @@ type actorTable struct {
|
|||
|
||||
AllColumns postgres.ColumnList
|
||||
MutableColumns postgres.ColumnList
|
||||
DefaultColumns postgres.ColumnList
|
||||
}
|
||||
|
||||
type ActorTable struct {
|
||||
|
|
@ -563,6 +564,7 @@ func newActorTableImpl(schemaName, tableName, alias string) actorTable {
|
|||
LastUpdateColumn = postgres.TimestampColumn("last_update")
|
||||
allColumns = postgres.ColumnList{ActorIDColumn, FirstNameColumn, LastNameColumn, LastUpdateColumn}
|
||||
mutableColumns = postgres.ColumnList{FirstNameColumn, LastNameColumn, LastUpdateColumn}
|
||||
defaultColumns = postgres.ColumnList{ActorIDColumn}
|
||||
)
|
||||
|
||||
return actorTable{
|
||||
|
|
@ -576,6 +578,7 @@ func newActorTableImpl(schemaName, tableName, alias string) actorTable {
|
|||
|
||||
AllColumns: allColumns,
|
||||
MutableColumns: mutableColumns,
|
||||
DefaultColumns: defaultColumns,
|
||||
}
|
||||
}
|
||||
`
|
||||
|
|
@ -660,6 +663,7 @@ type actorInfoTable struct {
|
|||
|
||||
AllColumns postgres.ColumnList
|
||||
MutableColumns postgres.ColumnList
|
||||
DefaultColumns postgres.ColumnList
|
||||
}
|
||||
|
||||
type ActorInfoTable struct {
|
||||
|
|
@ -703,6 +707,7 @@ func newActorInfoTableImpl(schemaName, tableName, alias string) actorInfoTable {
|
|||
FilmInfoColumn = postgres.StringColumn("film_info")
|
||||
allColumns = postgres.ColumnList{ActorIDColumn, FirstNameColumn, LastNameColumn, FilmInfoColumn}
|
||||
mutableColumns = postgres.ColumnList{ActorIDColumn, FirstNameColumn, LastNameColumn, FilmInfoColumn}
|
||||
defaultColumns = postgres.ColumnList{}
|
||||
)
|
||||
|
||||
return actorInfoTable{
|
||||
|
|
@ -716,6 +721,7 @@ func newActorInfoTableImpl(schemaName, tableName, alias string) actorInfoTable {
|
|||
|
||||
AllColumns: allColumns,
|
||||
MutableColumns: mutableColumns,
|
||||
DefaultColumns: defaultColumns,
|
||||
}
|
||||
}
|
||||
`
|
||||
|
|
@ -1011,6 +1017,7 @@ type allTypesTable struct {
|
|||
|
||||
AllColumns postgres.ColumnList
|
||||
MutableColumns postgres.ColumnList
|
||||
DefaultColumns postgres.ColumnList
|
||||
}
|
||||
|
||||
type AllTypesTable struct {
|
||||
|
|
@ -1113,6 +1120,7 @@ func newAllTypesTableImpl(schemaName, tableName, alias string) allTypesTable {
|
|||
MoodColumn = postgres.StringColumn("mood")
|
||||
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}
|
||||
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}
|
||||
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}
|
||||
)
|
||||
|
||||
return allTypesTable{
|
||||
|
|
@ -1185,6 +1193,7 @@ func newAllTypesTableImpl(schemaName, tableName, alias string) allTypesTable {
|
|||
|
||||
AllColumns: allColumns,
|
||||
MutableColumns: mutableColumns,
|
||||
DefaultColumns: defaultColumns,
|
||||
}
|
||||
}
|
||||
`
|
||||
|
|
@ -1218,6 +1227,7 @@ type sampleRangesTable struct {
|
|||
|
||||
AllColumns postgres.ColumnList
|
||||
MutableColumns postgres.ColumnList
|
||||
DefaultColumns postgres.ColumnList
|
||||
}
|
||||
|
||||
type SampleRangesTable struct {
|
||||
|
|
@ -1263,6 +1273,7 @@ func newSampleRangesTableImpl(schemaName, tableName, alias string) sampleRangesT
|
|||
NumRangeColumn = postgres.NumericRangeColumn("num_range")
|
||||
allColumns = postgres.ColumnList{DateRangeColumn, TimestampRangeColumn, TimestampzRangeColumn, Int4RangeColumn, Int8RangeColumn, NumRangeColumn}
|
||||
mutableColumns = postgres.ColumnList{DateRangeColumn, TimestampRangeColumn, TimestampzRangeColumn, Int4RangeColumn, Int8RangeColumn, NumRangeColumn}
|
||||
defaultColumns = postgres.ColumnList{DateRangeColumn, TimestampRangeColumn, TimestampzRangeColumn, Int4RangeColumn, Int8RangeColumn, NumRangeColumn}
|
||||
)
|
||||
|
||||
return sampleRangesTable{
|
||||
|
|
@ -1278,6 +1289,7 @@ func newSampleRangesTableImpl(schemaName, tableName, alias string) sampleRangesT
|
|||
|
||||
AllColumns: allColumns,
|
||||
MutableColumns: mutableColumns,
|
||||
DefaultColumns: defaultColumns,
|
||||
}
|
||||
}
|
||||
`
|
||||
|
|
@ -1310,6 +1322,7 @@ type linkTable struct {
|
|||
|
||||
AllColumns postgres.ColumnList
|
||||
MutableColumns postgres.ColumnList
|
||||
DefaultColumns postgres.ColumnList
|
||||
}
|
||||
|
||||
type LinkTable struct {
|
||||
|
|
@ -1353,6 +1366,7 @@ func newLinkTableImpl(schemaName, tableName, alias string) linkTable {
|
|||
DescriptionColumn = postgres.StringColumn("description")
|
||||
allColumns = postgres.ColumnList{IDColumn, URLColumn, NameColumn, DescriptionColumn}
|
||||
mutableColumns = postgres.ColumnList{URLColumn, NameColumn, DescriptionColumn}
|
||||
defaultColumns = postgres.ColumnList{IDColumn}
|
||||
)
|
||||
|
||||
return linkTable{
|
||||
|
|
@ -1366,6 +1380,7 @@ func newLinkTableImpl(schemaName, tableName, alias string) linkTable {
|
|||
|
||||
AllColumns: allColumns,
|
||||
MutableColumns: mutableColumns,
|
||||
DefaultColumns: defaultColumns,
|
||||
}
|
||||
}
|
||||
`
|
||||
|
|
|
|||
|
|
@ -185,6 +185,7 @@ type actorTable struct {
|
|||
|
||||
AllColumns sqlite.ColumnList
|
||||
MutableColumns sqlite.ColumnList
|
||||
DefaultColumns sqlite.ColumnList
|
||||
}
|
||||
|
||||
type ActorTable struct {
|
||||
|
|
@ -228,6 +229,7 @@ func newActorTableImpl(schemaName, tableName, alias string) actorTable {
|
|||
LastUpdateColumn = sqlite.TimestampColumn("last_update")
|
||||
allColumns = sqlite.ColumnList{ActorIDColumn, FirstNameColumn, LastNameColumn, LastUpdateColumn}
|
||||
mutableColumns = sqlite.ColumnList{FirstNameColumn, LastNameColumn, LastUpdateColumn}
|
||||
defaultColumns = sqlite.ColumnList{LastUpdateColumn}
|
||||
)
|
||||
|
||||
return actorTable{
|
||||
|
|
@ -241,6 +243,7 @@ func newActorTableImpl(schemaName, tableName, alias string) actorTable {
|
|||
|
||||
AllColumns: allColumns,
|
||||
MutableColumns: mutableColumns,
|
||||
DefaultColumns: defaultColumns,
|
||||
}
|
||||
}
|
||||
`
|
||||
|
|
@ -307,6 +310,7 @@ type filmListTable struct {
|
|||
|
||||
AllColumns sqlite.ColumnList
|
||||
MutableColumns sqlite.ColumnList
|
||||
DefaultColumns sqlite.ColumnList
|
||||
}
|
||||
|
||||
type FilmListTable struct {
|
||||
|
|
@ -354,6 +358,7 @@ func newFilmListTableImpl(schemaName, tableName, alias string) filmListTable {
|
|||
ActorsColumn = sqlite.StringColumn("actors")
|
||||
allColumns = sqlite.ColumnList{FidColumn, TitleColumn, DescriptionColumn, CategoryColumn, PriceColumn, LengthColumn, RatingColumn, ActorsColumn}
|
||||
mutableColumns = sqlite.ColumnList{FidColumn, TitleColumn, DescriptionColumn, CategoryColumn, PriceColumn, LengthColumn, RatingColumn, ActorsColumn}
|
||||
defaultColumns = sqlite.ColumnList{}
|
||||
)
|
||||
|
||||
return filmListTable{
|
||||
|
|
@ -371,6 +376,7 @@ func newFilmListTableImpl(schemaName, tableName, alias string) filmListTable {
|
|||
|
||||
AllColumns: allColumns,
|
||||
MutableColumns: mutableColumns,
|
||||
DefaultColumns: defaultColumns,
|
||||
}
|
||||
}
|
||||
`
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue