now we can see the packages, and the properties of them
This commit is contained in:
93
main.go
93
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)
|
||||
}
|
||||
|
Reference in New Issue
Block a user