File tree 9 files changed +95
-7
lines changed
9 files changed +95
-7
lines changed Original file line number Diff line number Diff line change @@ -32,4 +32,4 @@ services:
32
32
33
33
networks :
34
34
postgres :
35
- driver : bridge
35
+ driver : bridge
Original file line number Diff line number Diff line change @@ -10,4 +10,5 @@ require (
10
10
github.com/gofiber/fiber/v2 v2.1.3
11
11
github.com/gofiber/jwt/v2 v2.0.1
12
12
github.com/joho/godotenv v1.3.0
13
+ golang.org/x/crypto v0.0.0-20201112155050-0c6587e931a9
13
14
)
Original file line number Diff line number Diff line change @@ -114,6 +114,8 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh
114
114
golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a /go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto =
115
115
golang.org/x/crypto v0.0.0-20201012173705-84dcc777aaee h1:4yd7jl+vXjalO5ztz6Vc1VADv+S/80LGJmyl1ROJ2AI =
116
116
golang.org/x/crypto v0.0.0-20201012173705-84dcc777aaee /go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto =
117
+ golang.org/x/crypto v0.0.0-20201112155050-0c6587e931a9 h1:umElSU9WZirRdgu2yFHY0ayQkEnKiOC1TtM3fWXFnoU =
118
+ golang.org/x/crypto v0.0.0-20201112155050-0c6587e931a9 /go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto =
117
119
golang.org/x/exp v0.0.0-20190121172915-509febef88a4 /go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA =
118
120
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8 /go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA =
119
121
golang.org/x/exp v0.0.0-20200821190819-94841d0725da /go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU =
Original file line number Diff line number Diff line change @@ -8,12 +8,21 @@ import (
8
8
9
9
func init () {
10
10
migrations .MustRegisterTx (func (db migrations.DB ) error {
11
- fmt .Println ("creating table my_table..." )
12
- _ , err := db .Exec (`CREATE TABLE my_table()` )
11
+ fmt .Println ("creating table users..." )
12
+ _ , err := db .Exec (`CREATE TABLE users (
13
+ id serial PRIMARY KEY,
14
+ first_name varchar(30),
15
+ last_name varchar(30),
16
+ email varchar(50) UNIQUE NOT NULL,
17
+ password varchar NOT NULL,
18
+ handle varchar(30) UNIQUE NOT NULL,
19
+ rating integer DEFAULT 1300,
20
+ createdAt timestamp
21
+ );` )
13
22
return err
14
23
}, func (db migrations.DB ) error {
15
- fmt .Println ("dropping table my_table ..." )
16
- _ , err := db .Exec (`DROP TABLE my_table ` )
24
+ fmt .Println ("dropping table users ..." )
25
+ _ , err := db .Exec (`DROP TABLE users ` )
17
26
return err
18
27
})
19
28
}
Original file line number Diff line number Diff line change @@ -4,4 +4,4 @@ DB_PASSWD=
4
4
PGADMIN_EMAIL =
5
5
PGADMIN_PASSWD =
6
6
7
- SECRET_KEY =
7
+ SECRET_KEY =
Original file line number Diff line number Diff line change 7
7
jwt "github.com/dgrijalva/jwt-go"
8
8
"github.com/gofiber/fiber/v2"
9
9
"github.com/joho/godotenv"
10
+ models "github.com/raydwaipayan/onlinejudge-server/server/models"
10
11
"github.com/raydwaipayan/onlinejudge-server/server/types"
11
12
)
12
13
@@ -17,7 +18,7 @@ func Register(c *fiber.Ctx) error {
17
18
if err := c .BodyParser (u ); err != nil {
18
19
return c .SendStatus (fiber .StatusBadRequest )
19
20
}
20
-
21
+ u . Create ( models . DBConfigURL )
21
22
return c .SendStatus (fiber .StatusOK )
22
23
}
23
24
Original file line number Diff line number Diff line change
1
+ package models
2
+
3
+ import (
4
+ "context"
5
+ "os"
6
+
7
+ pg "github.com/go-pg/pg/v10"
8
+ "github.com/joho/godotenv"
9
+ )
10
+
11
+ // DBConfigURL config url of database
12
+ var DBConfigURL * pg.DB
13
+
14
+ // InitDb to initialise database
15
+ func InitDb () {
16
+ godotenv .Load ()
17
+
18
+ DBConfigURL = pg .Connect (& pg.Options {
19
+ Addr : ":5432" ,
20
+ User : os .Getenv ("DB_USER" ),
21
+ Password : os .Getenv ("DB_PASSWD" ),
22
+ Database : os .Getenv ("DB_NAME" ),
23
+ })
24
+
25
+ //Check if the database is running
26
+ ctx := context .Background ()
27
+
28
+ if err := DBConfigURL .Ping (ctx ); err != nil {
29
+ panic (err )
30
+ }
31
+ }
Original file line number Diff line number Diff line change 4
4
"github.com/gofiber/fiber/v2"
5
5
"github.com/gofiber/fiber/v2/middleware/logger"
6
6
"github.com/gofiber/fiber/v2/middleware/recover"
7
+ models "github.com/raydwaipayan/onlinejudge-server/server/models"
7
8
router "github.com/raydwaipayan/onlinejudge-server/server/router"
8
9
)
9
10
@@ -12,5 +13,6 @@ func main() {
12
13
app .Use (recover .New (), logger .New ())
13
14
14
15
router .SetupRoutes (app )
16
+ models .InitDb ()
15
17
app .Listen (":3000" )
16
18
}
Original file line number Diff line number Diff line change
1
+ package types
2
+
3
+ import (
4
+ "log"
5
+
6
+ pg "github.com/go-pg/pg/v10"
7
+ "golang.org/x/crypto/bcrypt"
8
+ )
9
+
10
+ //Create create a new user and insert into db
11
+ func (u * User ) Create (db * pg.DB ) error {
12
+ _ , err := db .Model (u ).Insert ()
13
+ return err
14
+ }
15
+
16
+ //Update update existing user
17
+ func (u * User ) Update (db * pg.DB ) error {
18
+ _ , err := db .Model (u ).Update ()
19
+ return err
20
+ }
21
+
22
+ // CheckUserExists to check if user is present
23
+ func (u * User ) CheckUserExists (db * pg.DB ) (bool , error ) {
24
+ user := new (User )
25
+ err := db .Model (user ).Table ("users" ).Where ("users.email = ?" , u .Email ).Limit (1 ).Select ()
26
+ encryptionErr := bcrypt .CompareHashAndPassword ([]byte (user .Password ), []byte (u .Password ))
27
+ if encryptionErr == nil {
28
+ u .FirstName = user .FirstName
29
+ u .LastName = user .LastName
30
+ return true , nil
31
+ }
32
+ if err != nil {
33
+ log .Println (err )
34
+ }
35
+ return false , err
36
+ }
37
+
38
+ //Delete delete user
39
+ func (u * User ) Delete (db * pg.DB ) error {
40
+ _ , err := db .Model (u ).Delete ()
41
+ return err
42
+ }
You can’t perform that action at this time.
0 commit comments