2 Commits
v0.2.0 ... main

Author SHA1 Message Date
bb6a45732f Derived tabled func 2025-10-22 12:22:26 +05:30
2551e07b3e Field, date truncate method 2025-10-21 16:45:43 +05:30
4 changed files with 28 additions and 11 deletions

View File

@@ -76,8 +76,18 @@ func generate(scheamPath, outDir string) error {
return err
}
}
sb.WriteString(")")
sb.WriteString(`
func DerivedTable(tblName string, fromQry pgm.Query) pgm.Table {
t := pgm.Table{
Name: tblName,
DerivedTable: fromQry,
}
return t
}`)
// Format code before saving
code, err := formatGoCode(sb.String())
if err != nil {

View File

@@ -131,6 +131,16 @@ func (f Field) IsNotNull() Conditioner {
return &Cond{Field: col, op: " IS NOT NULL", len: len(col) + 12}
}
// DateTrunc will truncate date or timestamp to specified level of precision
//
// Level values:
// - microseconds, milliseconds, second, minute, hour
// - day, week (Monday start), month, quarter, year
// - decade, century, millennium
func (f Field) DateTrunc(level, as string) Field {
return Field("DATE_TRUNC('" + level + "', " + f.String() + ") AS " + as)
}
// EqualFold will use LOWER(column_name) = LOWER(val) for comparision
func (f Field) EqFold(val string) Conditioner {
col := f.String()

View File

@@ -1,11 +0,0 @@
package db
import "code.patial.tech/go/pgm"
func DerivedTable(tblName string, fromQry pgm.Query) pgm.Table {
t := pgm.Table{
Name: tblName,
DerivedTable: fromQry,
}
return t
}

View File

@@ -12,3 +12,11 @@ var (
Comment = pgm.Table{Name: "comments", FieldCount: 5}
Employee = pgm.Table{Name: "employees", FieldCount: 5}
)
func DerivedTable(tblName string, fromQry pgm.Query) pgm.Table {
t := pgm.Table{
Name: tblName,
DerivedTable: fromQry,
}
return t
}