table all field

This commit is contained in:
2025-10-18 14:43:42 +05:30
parent 325103e8ef
commit 12d6fface6
16 changed files with 149 additions and 137 deletions

View File

@@ -13,59 +13,73 @@ func (f Field) String() string {
return string(f)
}
// Count fn wrapping of field
// Count function wrapped field
func (f Field) Count() Field {
return Field("COUNT(" + f.String() + ")")
}
// StringEscape will return a empty string for null value
// StringEscape will wrap field with:
//
// COALESCE(field, ”)
func (f Field) StringEscape() Field {
return Field("COALESCE(" + f.String() + ", '')")
}
// NumberEscape will return a zero string for null value
// NumberEscape will wrap field with:
//
// COALESCE(field, 0)
func (f Field) NumberEscape() Field {
return Field("COALESCE(" + f.String() + ", 0)")
}
// BooleanEscape will return a false for null value
// BooleanEscape will wrap field with:
//
// COALESCE(field, FALSE)
func (f Field) BooleanEscape() Field {
return Field("COALESCE(" + f.String() + ", FALSE)")
}
// Avg fn wrapping of field
// Avg function wrapped field
func (f Field) Avg() Field {
return Field("AVG(" + f.String() + ")")
}
// Sum function wrapped field
func (f Field) Sum() Field {
return Field("SUM(" + f.String() + ")")
}
// Max function wrapped field
func (f Field) Max() Field {
return Field("MAX(" + f.String() + ")")
}
// Min function wrapped field
func (f Field) Min() Field {
return Field("Min(" + f.String() + ")")
}
// Lower function wrapped field
func (f Field) Lower() Field {
return Field("LOWER(" + f.String() + ")")
}
// Upper function wrapped field
func (f Field) Upper() Field {
return Field("UPPER(" + f.String() + ")")
}
// Trim function wrapped field
func (f Field) Trim() Field {
return Field("TRIM(" + f.String() + ")")
}
// Asc suffixed field, supposed to be used with order by
func (f Field) Asc() Field {
return Field(f.String() + " ASC")
}
// Desc suffixed field, supposed to be used with order by
func (f Field) Desc() Field {
return Field(f.String() + " DESC")
}
@@ -133,14 +147,12 @@ func (f Field) ILike(val string) Conditioner {
return &Cond{Field: col, Val: val, op: " ILIKE $", len: len(col) + 5}
}
// In using ANY
func (f Field) In(val ...any) Conditioner {
func (f Field) Any(val ...any) Conditioner {
col := f.String()
return &Cond{Field: col, Val: val, op: " = ANY($", action: CondActionNeedToClose, len: len(col) + 5}
}
// NotIn using ANY
func (f Field) NotIn(val ...any) Conditioner {
func (f Field) NotAny(val ...any) Conditioner {
col := f.String()
return &Cond{Field: col, Val: val, op: " != ANY($", action: CondActionNeedToClose, len: len(col) + 5}
}
@@ -151,6 +163,18 @@ func (f Field) NotInSubQuery(qry WhereClause) Conditioner {
return &Cond{Field: col, Val: qry, op: " != ANY($)", action: CondActionSubQuery}
}
func ConcatWs(sep string, fields ...Field) Field {
return Field("concat_ws('" + sep + "'," + joinFileds(fields) + ")")
}
func StringAgg(exp, sep string) Field {
return Field("string_agg(" + exp + ",'" + sep + "')")
}
func StringAggCast(exp, sep string) Field {
return Field("string_agg(cast(" + exp + " as varchar),'" + sep + "')")
}
func joinFileds(fields []Field) string {
sb := getSB()
defer putSB(sb)