diff options
| author | Physick <96335032+DegustatorPonos@users.noreply.github.com> | 2025-11-29 21:06:27 +0500 |
|---|---|---|
| committer | Physick <96335032+DegustatorPonos@users.noreply.github.com> | 2025-11-29 21:06:27 +0500 |
| commit | aa3d908506cb4ea325d31fcfea2c1dca3735e76f (patch) | |
| tree | 4e485586f5f60c3f3d17090178632efb7ae21b95 /:w | |
| parent | c64d43552497d46ae30272d5bf93c2162ea2a1db (diff) | |
removed :w
Diffstat (limited to ':w')
| -rw-r--r-- | :w | 66 |
1 files changed, 0 insertions, 66 deletions
@@ -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 -} |
