Skip to content

Commit 52c7c27

Browse files
committed
changed folder structure
1 parent 91a7a2e commit 52c7c27

File tree

3,605 files changed

+9128884
-245
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

3,605 files changed

+9128884
-245
lines changed

src/src renamed to app/app

18.9 MB
Binary file not shown.

app/app.go

+165
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,165 @@
1+
package main
2+
3+
import (
4+
. "app/db"
5+
. "app/db/getdata"
6+
"context"
7+
"fmt"
8+
"html/template"
9+
"io"
10+
"net/http"
11+
_ "net/http/pprof"
12+
"os"
13+
"path/filepath"
14+
"strings"
15+
_ "time"
16+
17+
//#import
18+
"github.com/labstack/echo/v4"
19+
"github.com/labstack/echo/v4/middleware"
20+
"github.com/labstack/gommon/log"
21+
)
22+
23+
type TemplateRenderer struct {
24+
templates *template.Template
25+
}
26+
27+
// Render renders a template document
28+
func (t *TemplateRenderer) Render(w io.Writer, name string, data interface{}, c echo.Context) error {
29+
30+
// Add global methods if data is a map
31+
if viewContext, isMap := data.(map[string]interface{}); isMap {
32+
viewContext["reverse"] = c.Echo().Reverse
33+
}
34+
35+
return t.templates.ExecuteTemplate(w, name, data)
36+
}
37+
38+
var err error
39+
40+
func main() {
41+
//#createdb
42+
e := echo.New()
43+
t, err := ParseDirectory("templates/")
44+
if err != nil {
45+
fmt.Println(err)
46+
}
47+
renderer := &TemplateRenderer{
48+
templates: template.Must(t, err),
49+
}
50+
51+
e.Renderer = renderer
52+
53+
e.Use(middleware.CORSWithConfig(middleware.CORSConfig{
54+
AllowOrigins: []string{"*"},
55+
AllowMethods: []string{http.MethodGet, http.MethodHead, http.MethodPut, http.MethodPatch, http.MethodPost, http.MethodDelete},
56+
}))
57+
58+
Routes(e)
59+
60+
// Route
61+
e.Logger.SetLevel(log.ERROR)
62+
e.Use(middleware.Logger())
63+
e.Use(middleware.Recover())
64+
e.Use(middleware.SecureWithConfig(middleware.SecureConfig{
65+
XSSProtection: "1; mode=block",
66+
ContentTypeNosniff: "nosniff",
67+
XFrameOptions: "SAMEORIGIN",
68+
HSTSMaxAge: 3600,
69+
ContentSecurityPolicy: "",
70+
}))
71+
e.Use(middleware.BodyLimit("3M"))
72+
e.IPExtractor = echo.ExtractIPDirect()
73+
e.Use(middleware.GzipWithConfig(middleware.GzipConfig{
74+
Level: 5,
75+
}))
76+
e.Use(middleware.RateLimiter(middleware.NewRateLimiterMemoryStore(30)))
77+
e.Static("/static", "static")
78+
// Start server
79+
e.Logger.Fatal(e.Start(":3000"))
80+
81+
}
82+
func GetAllFilePathsInDirectory(dirpath string) ([]string, error) {
83+
var paths []string
84+
err := filepath.Walk(dirpath, func(path string, info os.FileInfo, err error) error {
85+
if err != nil {
86+
return err
87+
}
88+
if !info.IsDir() {
89+
paths = append(paths, path)
90+
}
91+
return nil
92+
})
93+
if err != nil {
94+
return nil, err
95+
}
96+
97+
return paths, nil
98+
}
99+
100+
func ParseDirectory(dirpath string) (*template.Template, error) {
101+
paths, err := GetAllFilePathsInDirectory(dirpath)
102+
if err != nil {
103+
return nil, err
104+
}
105+
return template.ParseFiles(paths...)
106+
}
107+
108+
func Routes(e *echo.Echo) {
109+
e.GET("/", Home)
110+
e.GET("/route/:routes", List)
111+
112+
}
113+
114+
func Home(c echo.Context) error {
115+
116+
return c.Render(http.StatusOK, "home.html", map[string]interface{}{})
117+
118+
}
119+
120+
func List(c echo.Context) error {
121+
routes := c.Param("routes")
122+
nospaceroutes := strings.ReplaceAll(routes, " ", "")
123+
nospaceroutesnoslash := strings.ReplaceAll(nospaceroutes, "/", "")
124+
db, err := DbConnection()
125+
if err != nil {
126+
fmt.Println(err)
127+
}
128+
var exists bool
129+
type Data struct {
130+
ID string "param:'id' query:'id' form:'id'"
131+
Datas string "param:'datas' query:'datas' form:'datas'"
132+
}
133+
134+
d := Data{}
135+
const create string = "CREATE TABLE IF NOT EXISTS data ( id INTEGER NOT NULL PRIMARY KEY, datas DATETIME NOT NULL);"
136+
137+
if _, err := db.Exec(create); err != nil {
138+
fmt.Println(err)
139+
}
140+
141+
stmts := db.QueryRowContext(context.Background(), "SELECT EXISTS(SELECT 1 FROM data WHERE datas=?)", d.Datas)
142+
err = stmts.Scan(&exists)
143+
if err != nil {
144+
fmt.Println(err)
145+
}
146+
147+
//prepare the statement to ensure no sql injection
148+
stmt, err := db.Prepare("INSERT INTO data(datas) VALUES(?)")
149+
if err != nil {
150+
fmt.Println(err)
151+
}
152+
153+
//actually make the execution of the query
154+
_, err = stmt.Exec(d.Datas)
155+
if err != nil {
156+
fmt.Println(err)
157+
}
158+
159+
data := Getalldata(db)
160+
161+
return c.Render(http.StatusOK, nospaceroutesnoslash+".html", map[string]interface{}{
162+
"data": data,
163+
})
164+
165+
}

app/db/database.db

8 KB
Binary file not shown.

app/db/db.go

+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
2+
package db
3+
4+
import (
5+
"database/sql"
6+
"fmt"
7+
"log"
8+
"time"
9+
10+
_ "modernc.org/sqlite"
11+
)
12+
13+
const file string = "./db/database.db"
14+
15+
func DbConnection() (*sql.DB, error) {
16+
//db urls conn to db database used
17+
db, err := sql.Open("sqlite", file)
18+
if err != nil {
19+
fmt.Println(err)
20+
}
21+
db.SetMaxOpenConns(20)
22+
db.SetMaxIdleConns(20)
23+
db.SetConnMaxLifetime(time.Minute * 5)
24+
//check if it pings
25+
err = db.Ping()
26+
if err != nil {
27+
fmt.Println(err)
28+
}
29+
30+
log.Printf("Connected to DB %s successfully\n", file)
31+
return db, nil
32+
} //end of connect
33+
34+
func ErrorCheck(err error) {
35+
if err != nil {
36+
fmt.Println(err.Error())
37+
}
38+
}

app/db/getdata/getdata.go

+49
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
2+
package getdata
3+
4+
import (
5+
"database/sql"
6+
"fmt"
7+
)
8+
9+
type Data struct {
10+
ID string "param:'id' query:'id' form:'id'"
11+
Datas string "param:'datas' query:'datas' form:'datas'"
12+
}
13+
func Getalldata(data *sql.DB) []Data {
14+
15+
16+
//variables used to store data from the query
17+
var (
18+
id string
19+
datas string
20+
Datass []Data //used to store all users
21+
)
22+
i := 0 //used to get how many scans
23+
24+
//get from database
25+
rows, err := data.Query("select * from data")
26+
if err != nil {
27+
fmt.Println(err)
28+
}
29+
30+
//cycle through the rows to collect all the data
31+
for rows.Next() {
32+
err := rows.Scan(&id, &datas)
33+
if err != nil {
34+
fmt.Println(err)
35+
}
36+
37+
i++
38+
fmt.Println("scan ", i)
39+
40+
//store into memory
41+
u := Data{ID: id, Datas: datas}
42+
Datass = append(Datass, u)
43+
44+
}
45+
//close everything
46+
defer rows.Close()
47+
defer data.Close()
48+
return Datass
49+
}

app/go.mod

+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
module app
2+
3+
go 1.18
4+
5+
require (
6+
github.com/labstack/echo/v4 v4.9.0
7+
github.com/labstack/gommon v0.3.1
8+
modernc.org/sqlite v1.19.1
9+
)
10+
11+
require (
12+
github.com/golang-jwt/jwt v3.2.2+incompatible // indirect
13+
github.com/google/uuid v1.3.0 // indirect
14+
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect
15+
github.com/mattn/go-colorable v0.1.11 // indirect
16+
github.com/mattn/go-isatty v0.0.16 // indirect
17+
github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0 // indirect
18+
github.com/valyala/bytebufferpool v1.0.0 // indirect
19+
github.com/valyala/fasttemplate v1.2.1 // indirect
20+
golang.org/x/crypto v0.0.0-20210817164053-32db794688a5 // indirect
21+
golang.org/x/mod v0.3.0 // indirect
22+
golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f // indirect
23+
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab // indirect
24+
golang.org/x/text v0.3.7 // indirect
25+
golang.org/x/time v0.0.0-20201208040808-7e3f01d25324 // indirect
26+
golang.org/x/tools v0.0.0-20201124115921-2c860bdd6e78 // indirect
27+
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect
28+
lukechampine.com/uint128 v1.1.1 // indirect
29+
modernc.org/cc/v3 v3.38.1 // indirect
30+
modernc.org/ccgo/v3 v3.16.9 // indirect
31+
modernc.org/libc v1.19.0 // indirect
32+
modernc.org/mathutil v1.5.0 // indirect
33+
modernc.org/memory v1.4.0 // indirect
34+
modernc.org/opt v0.1.3 // indirect
35+
modernc.org/strutil v1.1.3 // indirect
36+
modernc.org/token v1.0.1 // indirect
37+
)

0 commit comments

Comments
 (0)