Skip to content

Commit

Permalink
Refactorized Code #1
Browse files Browse the repository at this point in the history
  • Loading branch information
Mshivam2409 committed Mar 3, 2021
1 parent f16744e commit a869a9f
Show file tree
Hide file tree
Showing 26 changed files with 365 additions and 456 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,4 @@ bin/main
!.secrets/*.secret
config.yml
config.yaml
kratos
38 changes: 0 additions & 38 deletions .keto/access-policy.json

This file was deleted.

39 changes: 0 additions & 39 deletions .keto/keto.yaml

This file was deleted.

Empty file removed .keto/roles/admin.example.json
Empty file.
Empty file removed .keto/roles/user.example.json
Empty file.
5 changes: 4 additions & 1 deletion .kratos/.kratos.prod.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
session:
lifespan: 24h

dsn: memory

serve:
public:
base_url: http://127.0.0.1:3001/.ory/kratos/public
Expand Down Expand Up @@ -48,7 +51,7 @@ hashers:
salt_length: 16
key_length: 16
identity:
default_schema_url: file:///etc/config/kratos/identity.traits.schema.json
default_schema_url: file:///home/mshivam/AnC/go/.kratos/identity.traits.schema.json
courier:
smtp:
connection_uri: smtps://anc.courses@gmail.com:AnC@2020@smtp.gmail.com:465/?skip_ssl_verify=true
14 changes: 14 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Changelog

## 09/02/2021 `v0.1.0`

- Initial Commit for web app

## 10/02/2021 `v0.1.1`

- GraphQL support added!

## 03/02/2021 `v0.1.2`

- Ory KETO has been phased out in support of Custom MongoDB Solution.
- Nodemailer has been phased out in support of go `net/smtp` package.
56 changes: 56 additions & 0 deletions api/controller.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
package api

import (
"context"
"encoding/json"
"fmt"
"strconv"

"github.com/Mshivam2409/AnC-Courses/database"
"github.com/Mshivam2409/AnC-Courses/models"
"github.com/Mshivam2409/AnC-Courses/services"
"github.com/gofiber/fiber/v2"
"go.mongodb.org/mongo-driver/bson"
)

// CreateFile sdfs
func CreateFile(c *fiber.Ctx) error {
d := services.GetService()
n, err := strconv.Atoi(c.FormValue("length"))
cno := c.FormValue("course")
if err != nil {
return &fiber.Error{Code: 422, Message: "Length of files must be a number"}
}
files := []string{}
for i := 0; i < n; i++ {
f, err := c.FormFile("file" + fmt.Sprint(n))
if err != nil {
return &fiber.Error{Code: 422, Message: "Unable to process file!"}
}
r, err := d.CreateFile("", f)
if err != nil {
return &fiber.Error{Code: 422, Message: "Unable to upload file!"}
}
out, err := json.Marshal(r)
if err != nil {
return &fiber.Error{Code: 422, Message: "Unable to get file ID!"}
}
files = append(files, string(out))
}
update := bson.D{
{Key: "$push", Value: bson.D{
{Key: "driveFiles", Value: bson.A{"$each", files}},
}},
}
err = database.MongoClient.Courses.Collection("courses").FindOneAndUpdate(context.TODO(), bson.D{{Key: "number", Value: cno}}, update).Decode(&models.MGMCourse{})
return c.Status(200).JSON(fiber.Map{"message": "success"})
}

func DownloadFile(ctx *fiber.Ctx) error {
d := services.GetService()
s, err := d.GetFile(ctx.Params("fid"))
if err != nil {
return &fiber.Error{Code: 500, Message: "Unable to download file!"}
}
return ctx.Status(200).SendStream(s)
}
8 changes: 5 additions & 3 deletions router/router.go → api/router.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package router
package api

import (
"log"
Expand All @@ -16,7 +16,7 @@ import (
// SetupRoutes ....
func SetupRoutes(app *fiber.App) {
srv := handler.NewDefaultServer(generated.NewExecutableSchema(generated.Config{Resolvers: &graph.Resolver{}}))
cache, err := services.NewCache(viper.GetString("redis"), viper.GetString("fsd"), 24*time.Hour)
cache, err := services.NewCache(viper.GetString("redis.host"), viper.GetString("redis.pwd"), 24*time.Hour)
if err != nil {
log.Printf("cannot create APQ redis cache: %v", err)
}
Expand All @@ -29,5 +29,7 @@ func SetupRoutes(app *fiber.App) {
return nil
})
restAPI := app.Group("/secure")
restAPI.Post("/file/create", services.CreateFile)
restAPI.Post("/file/create", CreateFile)
app.Get("/file/:fid", DownloadFile)
// app.Post("/register", services.Register)
}
9 changes: 0 additions & 9 deletions changelog.md

This file was deleted.

38 changes: 0 additions & 38 deletions database/courses.go

This file was deleted.

34 changes: 30 additions & 4 deletions database/mongo.go
Original file line number Diff line number Diff line change
@@ -1,13 +1,39 @@
package database

import "go.mongodb.org/mongo-driver/mongo"
import (
"context"
"log"

"github.com/spf13/viper"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
)

type mongoClient struct {
Users *mongo.Database
Courses *mongo.Database
}

var usersClient = ConnectUsersDB()
var coursesClinet = ConnectCoursesDB()
// MongoClient ...
var MongoClient = &mongoClient{}

// ConnectMongo ..
func ConnectMongo() {
MongoClient.Users = connect(viper.GetString("mongo.users"), "primarydb")
MongoClient.Courses = connect(viper.GetString("mongo.courses"), "students")
}

var MongoClient = &mongoClient{Users: usersClient, Courses: coursesClinet}
func connect(url string, dbname string) *mongo.Database {
clientOptions := options.Client().ApplyURI(url)
client, err := mongo.Connect(context.TODO(), clientOptions)
if err != nil {
log.Fatalf("Unable to Connect to MongoDB %v", err)
}
err = client.Ping(context.TODO(), nil)
if err != nil {
log.Fatalf("Unable to Connect to MongoDB %v", err)
}
log.Printf("Connected to MongoDB! URL : %s", url)
database := client.Database(dbname)
return database
}
37 changes: 0 additions & 37 deletions database/users.go

This file was deleted.

4 changes: 1 addition & 3 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,8 @@ require (
github.com/go-redis/redis v6.15.9+incompatible
github.com/gofiber/fiber/v2 v2.5.0
github.com/google/uuid v1.2.0 // indirect
github.com/hookactions/gqlgen-relay v0.0.0-20190817160925-716890b1c3b1 // indirect
github.com/klauspost/compress v1.11.8 // indirect
github.com/magiconair/properties v1.8.4 // indirect
github.com/ory/keto-client-go v0.5.2
github.com/ory/kratos-client-go v0.5.4-alpha.1
github.com/pelletier/go-toml v1.8.1 // indirect
github.com/spf13/afero v1.5.1 // indirect
Expand All @@ -33,7 +31,7 @@ require (
github.com/xdg/stringprep v1.0.0 // indirect
go.mongodb.org/mongo-driver v1.4.6
go.opencensus.io v0.23.0 // indirect
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110 // indirect
golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93
google.golang.org/api v0.40.0
google.golang.org/genproto v0.0.0-20210226172003-ab064af71705 // indirect
Expand Down
Loading

0 comments on commit a869a9f

Please sign in to comment.