- Package Version: <%= row.version %>
+
+ {{.Element.Packageversion}}: {{ .Version}}
-
Allowed use by <%= row.tag %>
+
{{.Element.Allow}} {{ .Tag}}
-
-
+
+
- <% }); %>
+ {{end}}
-
{{end}}
\ No newline at end of file
diff --git a/html/master.html b/html/master.html
index ab35bbb..4c76629 100644
--- a/html/master.html
+++ b/html/master.html
@@ -3,7 +3,7 @@
-
{{ .Title }}
+
{{ .ElementsData.Title }}
diff --git a/main.go b/main.go
index c132a7b..9e7fb83 100644
--- a/main.go
+++ b/main.go
@@ -7,6 +7,7 @@ import (
"log"
"net/http"
"os"
+ "strings"
"time"
_ "modernc.org/sqlite"
@@ -29,8 +30,10 @@ func simpRequestResp(res http.ResponseWriter, req *http.Request) {
fmt.Fprint(res, "Hello, M'Lord", 153*4, " I'm here to serveè")
}
func getMsgFromDB(sqldb *sql.DB, id string, lang string) string {
- query := fmt.Sprintf("SELECT %s FROM msgs WHERE content=$1", lang)
- res := sqldb.QueryRow(query, id)
+ var lngs []string
+ lngs = append(lngs, lang)
+ query := generateSQL("msgs",lngs,[2]string{"content", id})
+ res := sqldb.QueryRow(query)
lng := ""
dt := res.Scan(&lng)
if dt != nil {
@@ -38,21 +41,87 @@ func getMsgFromDB(sqldb *sql.DB, id string, lang string) string {
}
return lng
}
+func queryPacks(sqldb *sql.DB, element *elements) []packages{
+ pkg_list:= getPkgIdFromDB(sqldb)
+ pkgs := make([]packages,0)
+ for _,p := range pkg_list{
+ query:= generateSQL("packs_all",[]string{"*"}, [2]string{"id",p} )
+ res, err := sqldb.Query(query)
+ defer res.Close()
+ err = res.Err()
+ if err != nil {
+ log.Panicln(err)
+ }
+ for res.Next(){
+ npkg := packages{}
+ err:=res.Scan(&npkg.Id, &npkg.Name, &npkg.Version, &npkg.ExtraCommand, &npkg.Tag, &npkg.Warning)
+ if err != nil {
+ log.Fatalln(err)
+ }
+ npkg.Element = element
+ pkgs = append(pkgs, npkg)
+ }
+ }
+ return pkgs
+}
+func queryDatabase(sqldb *sql.DB, queryRow string) []string{
+
+ res:= sqldb.QueryRow(queryRow)
+ var values []string
+ err := res.Scan(&values)
+ if err != nil {
+ log.Println(err)
+ }
+ return values
+}
+func generateSQL(table string, columns []string, arg ...[2]string) string{
+ cols:=strings.Join(columns, ",")
+ table="SELECT " + cols +" FROM " + table
+ if len(arg) > 0{
+ table += " WHERE "
+ for i, a := range arg{
+ table += a[0] + " like '" + a[1] + "'"
+ if(i+1 < len(arg)){
+ table += " and "
+ }
+ }
+ }
+ return table
+}
func getPkgIdFromDB(sqldb *sql.DB) []string {
query, err := sqldb.Query("SELECT id FROM packs_all")
+ defer query.Close()
+ err = query.Err()
if err != nil {
log.Println(err)
}
var pkgs []string
- query.Scan(&pkgs)
+ var tmpstr string
+ for query.Next(){
+ err = query.Scan(&tmpstr)
+ if err != nil {
+ log.Println(err)
+ }
+ pkgs = append(pkgs, tmpstr)
+ }
+ // query.Scan(&pkgs)
if err != nil {
log.Println(err)
}
return pkgs
}
-// func fullSearchDB(sqldb *sql.DB) []string {
-
-// }
+func fullSearchDB(sqldb *sql.DB) []packages {
+ pkg_list:= getPkgIdFromDB(sqldb)
+ var pkgs []packages
+ for _,p :=range pkg_list{
+ query:= generateSQL("packs_all",[]string{"*"}, [2]string{"id",p} )
+ res:= queryDatabase(sqldb, query)
+ var pkg packages
+ pkg, _=ConvertStringsToPackage(res)
+ pkgs = append(pkgs, pkg)
+ }
+ return pkgs
+}
func index(sqldb *sql.DB) http.Handler {
return http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) {
b := elements{
@@ -65,11 +134,19 @@ func index(sqldb *sql.DB) http.Handler {
Warning: getMsgFromDB(sqldb, "warning", "heb"),
Explain: getMsgFromDB(sqldb, "explain", "heb"),
}
- templates, err := template.ParseFiles("html/master.html", "html/main.html")
+ data := struct {
+ ElementsData elements
+ PackagesData []packages
+ }{
+ ElementsData: b,
+ PackagesData: queryPacks(sqldb, &b),
+ }
+ templates, err := template.ParseFiles("html/master.html", "html/main.html")
+
if err != nil {
log.Println(err)
}
- err = templates.ExecuteTemplate(res, "master", &b)
+ err = templates.ExecuteTemplate(res, "master", data)
if err != nil {
log.Println(err)
}
diff --git a/packages.go b/packages.go
index 91c2067..069953b 100644
--- a/packages.go
+++ b/packages.go
@@ -1,11 +1,38 @@
package main
+import(
+ "fmt"
+ "strconv"
+)
+
type packages struct{
- name string
- version string
- extra_command string
- tag string
- warning bool
+ Id string
+ Name string
+ Version string
+ ExtraCommand *string
+ Tag string
+ Warning bool
+ Element *elements
+}
+func ConvertStringsToPackage(strs []string) (packages, error) {
+ var pkg packages
+ if len(strs) != 6 {
+ return pkg, fmt.Errorf("input slice must have exactly 6 elements")
+ }
+
+ warning, err := strconv.ParseBool(strs[5])
+ if err != nil {
+ return pkg, fmt.Errorf("error parsing Warning value: %s", err)
+ }
+
+ return packages{
+ Id: strs[0],
+ Name: strs[1],
+ Version: strs[2],
+ ExtraCommand: &strs[3],
+ Tag: strs[4],
+ Warning: warning,
+ }, nil
}
type elements struct {
Title string