Files
zitadel/backend/v3/storage/database/column.go

59 lines
1.1 KiB
Go
Raw Normal View History

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)
}