package db import ( "reflect" "strings" ) type DataTable[T any] struct { TableName string } // Forms a query to get all the fields from database func (self *DataTable[T]) formSelectRequest() string { var sb = strings.Builder{} sb.WriteString("SELECT (") var fields = self.getFields() for i, v := range fields { if i != 0 { sb.WriteString(", ") } sb.WriteString(v) } sb.WriteString(") FROM ") sb.WriteString(self.TableName) sb.WriteString(";") return sb.String() } func (self *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 }