summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--:w66
1 files changed, 0 insertions, 66 deletions
diff --git a/:w b/:w
deleted file mode 100644
index d7a5759..0000000
--- a/:w
+++ /dev/null
@@ -1,66 +0,0 @@
-package db
-
-import (
- "fmt"
- "reflect"
- "strings"
-)
-
-type DataTable[T any] struct {
- TableName string
-}
-
-// Filters are stored as KVP where the field is the key and the value is the filter
-func (base *DataTable[T]) formQueryWithFilters(filters map[string]any) string {
- if len(filters) == 0 {
- return base.formSelectAllQuery()
- }
- var sb = strings.Builder{}
- var baseQuery = base.formSelectAllQuery()
- sb.WriteString(strings.TrimRight(baseQuery, ";"))
- sb.WriteString(" WHERE (")
- var isFirst = true
- for k, v := range filters {
- if !isFirst {
- sb.WriteString(" AND ")
- }
- switch v.(type) {
- case string:
- sb.WriteString(fmt.Sprintf("%s = '%s'", k, v))
- }
- isFirst = false
- }
- sb.WriteString(");")
- return sb.String()
-}
-
-// Forms a query to get all the fields from database
-func (base *DataTable[T]) formSelectAllQuery() string {
- var sb = strings.Builder{}
- sb.WriteString("SELECT (")
- var fields = base.getFields()
- for i, v := range fields {
- if i != 0 {
- sb.WriteString(", ")
- }
- sb.WriteString(v)
- }
- sb.WriteString(") FROM ")
- sb.WriteString(base.TableName)
- sb.WriteString(";")
- return sb.String()
-}
-
-func (base *DataTable[T]) getFields() []string {
- var zero T
- var outp = make([]string, 0)
- for _, f := range reflect.VisibleFields(reflect.TypeOf(zero)) {
- var tag, exists = f.Tag.Lookup("sql")
- if exists {
- outp = append(outp, tag)
- } else {
- outp = append(outp, f.Name)
- }
- }
- return outp
-}