Skip to content

Commit

Permalink
# Add file upload and download endpoints
Browse files Browse the repository at this point in the history
  • Loading branch information
JonyBepary committed Oct 29, 2023
1 parent f1ce06a commit 9062e48
Show file tree
Hide file tree
Showing 8 changed files with 715 additions and 34 deletions.
249 changes: 227 additions & 22 deletions api.go

Large diffs are not rendered by default.

15 changes: 7 additions & 8 deletions awazz.go
Original file line number Diff line number Diff line change
@@ -1,13 +1,10 @@
package main

// "github.com/SohelAhmedJoni/Awazz-Backend/internal/model"
import "github.com/gin-gonic/gin"

import (
"github.com/gin-gonic/gin"
)
// "github.com/SohelAhmedJoni/Awazz-Backend/internal/model"

func main() {

r := gin.Default()
r.GET("/post", getPost)
r.POST("/post", savePost)
Expand All @@ -31,9 +28,11 @@ func main() {
r.GET("/likes", getLikes)
r.GET("/login", login)
r.POST("/register", register)

// r.GET("/login", getMessage)
// r.POST("/register", saveMessage)
r.POST("/upload", UploadFile)
r.GET("/download", DownloadFile)
r.POST("/uploads", UploadFiles)
r.Static("/Database/assets/", "./Database/assets/")
// r.GET("/downloads", DownloadFiles)

r.Run(":9091")
}
3 changes: 2 additions & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,11 @@ require (
github.com/davecgh/go-spew v1.1.1
github.com/gin-gonic/gin v1.9.1
github.com/glebarez/go-sqlite v1.21.2
github.com/mr-tron/base58 v1.2.0
github.com/oklog/ulid/v2 v2.1.0
github.com/stretchr/testify v1.8.4
github.com/syndtr/goleveldb v1.0.0
golang.org/x/crypto v0.9.0
golang.org/x/exp v0.0.0-20231006140011-7918f672742d
google.golang.org/protobuf v1.31.0
)

Expand Down
7 changes: 5 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -56,13 +56,14 @@ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
github.com/mr-tron/base58 v1.2.0 h1:T/HDJBh4ZCPbU39/+c3rRvE0uKBQlU27+QI8LJ4t64o=
github.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc=
github.com/oklog/ulid/v2 v2.1.0 h1:+9lhoxAP56we25tyYETBBY1YLA2SaoLvUFgrP2miPJU=
github.com/oklog/ulid/v2 v2.1.0/go.mod h1:rcEKHmBBKfef9DhnvX7y1HZBYxjXb0cP5ExxNsTT1QQ=
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/ginkgo v1.7.0 h1:WSHQ+IS43OoUrWtD1/bbclrwK8TTH5hzp+umCiuxHgs=
github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/gomega v1.4.3 h1:RE1xgDvH7imwFD45h+u2SgIfERHlS2yNG4DObb5BSKU=
github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
github.com/pborman/getopt v0.0.0-20170112200414-7148bc3a4c30/go.mod h1:85jBQOZwpVEaDAr341tbn15RS4fCAsIst0qp7i8ex1o=
github.com/pelletier/go-toml/v2 v2.0.8 h1:0ctb6s9mE31h0/lhu+J6OPmVeDxJn+kYnJc2jZR9tGQ=
github.com/pelletier/go-toml/v2 v2.0.8/go.mod h1:vuYfssBdrU2XDZ9bYydBu6t+6a6PYNcZljzZR9VXg+4=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
Expand Down Expand Up @@ -93,6 +94,8 @@ golang.org/x/arch v0.3.0 h1:02VY4/ZcO/gBOH6PUaoiptASxtXU10jazRCP865E97k=
golang.org/x/arch v0.3.0/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8=
golang.org/x/crypto v0.9.0 h1:LF6fAI+IutBocDJ2OT0Q1g8plpYljMZ4+lty+dsqw3g=
golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0=
golang.org/x/exp v0.0.0-20231006140011-7918f672742d h1:jtJma62tbqLibJ5sFQz8bKtEM8rJBtfilJ2qTU199MI=
golang.org/x/exp v0.0.0-20231006140011-7918f672742d/go.mod h1:ldy0pHrwJyGW56pPQzzkH36rKxoZW1tw7ZJpeKx+hdo=
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M=
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
Expand Down
113 changes: 113 additions & 0 deletions internal/model/file.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
package model

import (
"fmt"

"github.com/SohelAhmedJoni/Awazz-Backend/internal/durable"
)

func (s *File) Save() error {
db, err := durable.CreateDatabase("./Database/", "Common", "Shard_0.sqlite")
if err != nil {
panic(err)
}
defer db.Close()
str := `CREATE TABLE IF NOT EXISTS FILE(
ULID VARCHAR(128) PRIMARY KEY,
Name TEXT NOT NULL,
CreatedAt INTEGER NOT NULL,
UpdatedAt INTEGER,
Hash TEXT NOT NULL,
HashType TEXT NOT NULL,
MimeType TEXT NOT NULL,
Ext TEXT NOT NULL
)`
_, err = db.Exec(str)
if err != nil {
panic(err)
}

statement, err := db.Prepare("INSERT INTO FILE (ULID,Name,CreatedAt,UpdatedAt,Hash,HashType,MimeType,Ext) VALUES (?,?,?,?,?,?,?,?)")

if err != nil {
panic(err)
}

_, err = statement.Exec(s.Uuid, s.Name, s.CreatedAt, s.UpdatedAt, s.Hash, s.HashType, s.MimeType, s.Ext)
if err != nil {
panic(err)
}
return nil
}

func (g *File) Get(ULID string) error {
db, err := durable.CreateDatabase("./Database/", "Common", "Shard_0.sqlite")
if err != nil {
panic(err)
}
defer db.Close()

rows, err := db.Query("SELECT * from FILE where ULID = ?", ULID)
if err != nil {
panic(err)
}
defer rows.Close()

for rows.Next() {
err = rows.Scan(&g.Uuid, &g.Name, &g.CreatedAt, &g.UpdatedAt, &g.Hash, &g.HashType, &g.MimeType, &g.Ext)
if err != nil {
panic(err)
}
}

err = rows.Err()
if err != nil {
panic(err)
}

return nil
}

func (d *File) Delete(ULID string) error {
db, err := durable.CreateDatabase("./Database/", "Common", "Shard_0.sqlite")
if err != nil {
panic(err)
}
defer db.Close()

_, err = db.Exec("DELETE FROM FILE WHERE ULID= ?", ULID)

if err != nil {
panic(err)
}
return nil
}

func (u *FileList) Get(ULIDS []string) error {
db, err := durable.CreateDatabase("./Database/", "Common", "Shard_0.sqlite")
if err != nil {
panic(err)
}
defer db.Close()

for _, ULID := range ULIDS {
var g File
rows, err := db.Query(fmt.Sprintf("SELECT * from FILE where ULID = %v", ULID))
if err != nil {
panic(err)
}
defer rows.Close()
rows.Next()
err = rows.Scan(g.Uuid, g.Name, g.CreatedAt, g.UpdatedAt, g.Hash, g.HashType, g.MimeType, g.Ext)
if err != nil {
panic(err)
}
u.Files = append(u.Files, &g)
err = rows.Err()
if err != nil {
panic(err)
}
}

return nil
}
Loading

0 comments on commit 9062e48

Please sign in to comment.