Tags Usage
- db - column name in db
package main
type _ struct {
ID int `db:"id"`
}
- pk - if set then column is primary key
package main
type _ struct {
ID int `db:"id" pk:"true"`
}
- nullable - if set then column is nullable(without NOT NULL)
package main
type _ struct {
Code *int `db:"code" nullable:"true"`
}
- length - column length(useful for varchar)
package main
type _ struct {
Name string `db:"name" length:"64"`
}
- uniq - if set then column is unique(can be placed to many properties - grouped, on single column can be many uniq’s, separated by
,
)
package main
// CREATE UNIQUE INDEX uniq_name ON example_table (name);
type _ struct {
Name string `db:"name" uniq:"uniq_name"`
}
// CREATE UNIQUE INDEX uniq_name_parted ON example_table (name_part1, name2);
type _ struct {
NamePart1 string `db:"name_part1" uniq:"uniq_name_parted"`
NamePart2 string `db:"name2" uniq:"uniq_name_parted"`
}
- uniq_cond - work in pair with uniq, uniq_cond is a condition for uniq, can be placed on any column(of grouped uniq’s, do not set to every column of grouped uniq’s, can be multiple, separated by
,
)
package main
// CREATE UNIQUE INDEX uniq_name_parted ON example_table (name1, name2) WHERE is_selected = true;
type _ struct {
Checked bool `db:"is_checked"`
NamePart1 string `db:"name1" uniq:"uniq_name_parted" uniq_cond:"uniq_name_parted:(is_checked = true)"`
NamePart2 string `db:"name2" uniq:"uniq_name_parted"`
}
- index - if set then column is index(logic same as uniq)
package main
// CREATE INDEX idx_name ON example_table (name);
type _ struct {
Name string `db:"name" index:"idx_name"`
}
// CREATE INDEX idx_name_parted ON example_table (name_part1, name2);
type _ struct {
NamePart1 string `db:"name_part1" index:"idx_name_parted"`
NamePart2 string `db:"name2" index:"idx_name_parted"`
}
- index_cond - work in pair with index(logic same as uniq_cond)
package main
// CREATE INDEX idx_name_parted ON example_table (name1, name2) WHERE is_selected = true;
type _ struct {
Checked bool `db:"is_checked"`
NamePart1 string `db:"name1" index:"idx_name_parted" index_cond:"idx_name_parted:(is_checked = true)"`
NamePart2 string `db:"name2" index:"idx_name_parted"`
}
- default - if set then column has default value
package main
type _ struct {
Name string `db:"name" default:"123"`
}
- type - if set then column has type(manually set, without struct property type checking)
package main
type ExampleType int
type _ struct {
Type ExampleType `db:"type" type:"int"`
}
Possible types: text, varchar, json, jsonb, integer
Last updated on