2025-05-06 07:18:11 +02:00
|
|
|
package database
|
|
|
|
|
|
|
|
type Columns []Column
|
|
|
|
|
|
|
|
// Write implements [Column].
|
|
|
|
func (m Columns) Write(builder *StatementBuilder) {
|
|
|
|
for i, col := range m {
|
|
|
|
if i > 0 {
|
|
|
|
builder.WriteString(", ")
|
|
|
|
}
|
|
|
|
col.Write(builder)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2025-05-08 19:01:55 +02:00
|
|
|
// Column represents a column in a database table.
|
2025-05-06 07:18:11 +02:00
|
|
|
type Column interface {
|
|
|
|
Write(builder *StatementBuilder)
|
|
|
|
}
|
|
|
|
|
|
|
|
type column struct {
|
|
|
|
name string
|
|
|
|
}
|
|
|
|
|
|
|
|
func NewColumn(name string) Column {
|
|
|
|
return column{name: name}
|
|
|
|
}
|
|
|
|
|
|
|
|
// Write implements [Column].
|
|
|
|
func (c column) Write(builder *StatementBuilder) {
|
|
|
|
builder.WriteString(c.name)
|
|
|
|
}
|
|
|
|
|
|
|
|
var _ Column = (*column)(nil)
|
|
|
|
|
2025-05-08 19:01:55 +02:00
|
|
|
// ignoreCaseColumn represents two database columns, one for the
|
|
|
|
// original value and one for the lower case value.
|
2025-05-06 07:18:11 +02:00
|
|
|
type ignoreCaseColumn interface {
|
|
|
|
Column
|
|
|
|
WriteIgnoreCase(builder *StatementBuilder)
|
|
|
|
}
|
|
|
|
|
|
|
|
func NewIgnoreCaseColumn(name, suffix string) ignoreCaseColumn {
|
|
|
|
return ignoreCaseCol{
|
|
|
|
column: column{name: name},
|
|
|
|
suffix: suffix,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
type ignoreCaseCol struct {
|
|
|
|
column
|
|
|
|
suffix string
|
|
|
|
}
|
|
|
|
|
|
|
|
// WriteIgnoreCase implements [ignoreCaseColumn].
|
|
|
|
func (c ignoreCaseCol) WriteIgnoreCase(builder *StatementBuilder) {
|
2025-07-23 09:47:04 +02:00
|
|
|
c.Write(builder)
|
2025-05-06 07:18:11 +02:00
|
|
|
builder.WriteString(c.suffix)
|
|
|
|
}
|