diff --git a/Taskfile.yml b/Taskfile.yml index d74fa6c..495a0fa 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -9,7 +9,7 @@ tasks: - ./bin/api migrate: cmds: - - go run cmd/migrate/main.go + - go build -o "./bin/migrate.exe" "./cmd/migrate/main.go" && ./bin/migrate.exe build-run: cmds: - go build -o "./bin/api.exe" "./cmd/api/main.go" && ./bin/api.exe diff --git a/cmd/api/main.go b/cmd/api/main.go index 31e9357..0240486 100644 --- a/cmd/api/main.go +++ b/cmd/api/main.go @@ -2,6 +2,7 @@ package main import ( "context" + "log" "os" "wallet-api/pkg/api" "wallet-api/pkg/middleware" @@ -20,6 +21,12 @@ func main() { r := gin.New() r.Use(middleware.CORSMiddleware()) + file, err := os.OpenFile("logs.txt", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0666) + if err != nil { + log.Print("Cannot open file logs.txt") + } + log.SetOutput(file) + conn := db.CreateConnection(ctx, dbUrl) api.Init(r, conn) diff --git a/logs.txt b/logs.txt new file mode 100644 index 0000000..e69de29 diff --git a/pkg/services/users.go b/pkg/services/users.go index bb9bb61..27590ec 100644 --- a/pkg/services/users.go +++ b/pkg/services/users.go @@ -18,7 +18,6 @@ type UsersService struct { Db *pg.DB } - /* Create @@ -82,7 +81,11 @@ func (us *UsersService) Login(ctx context.Context, loginBody *models.Login) (*mo exceptionReturn := new(models.Exception) tokenPayload := new(models.Token) - db.Model(check).Where("? = ?", pg.Ident("email"), loginBody.Email).Select() + tx, _ := db.Begin() + defer tx.Rollback() + + tx.Model(check).Where("? = ?", pg.Ident("email"), loginBody.Email).Select() + if check.Email == "" { exceptionReturn.Message = "Email not found" exceptionReturn.ErrorCode = "400103" @@ -109,6 +112,8 @@ func (us *UsersService) Login(ctx context.Context, loginBody *models.Login) (*mo tokenPayload.Token = token + tx.Commit() + return tokenPayload, exceptionReturn } diff --git a/pkg/utl/db/db.go b/pkg/utl/db/db.go index 7ccc8be..982ac88 100644 --- a/pkg/utl/db/db.go +++ b/pkg/utl/db/db.go @@ -3,15 +3,43 @@ package db import ( "context" "fmt" + "log" + "os" "wallet-api/pkg/utl/common" "github.com/go-pg/pg/v10" ) +type LoggerHook struct { + QueryLogger *log.Logger +} + +func (e *LoggerHook) BeforeQuery(ctx context.Context, qe *pg.QueryEvent) (context.Context, error) { + return context.Background(), nil +} +func (e *LoggerHook) AfterQuery(ctx context.Context, qe *pg.QueryEvent) error { + if qe.Err != nil { + e.QueryLogger.Println(qe.Err) + } else { + fmtdQry, err := qe.FormattedQuery() + if err != nil { + return err + } + e.QueryLogger.Println(string(fmtdQry)) + } + + return nil +} + func CreateConnection(ctx context.Context, dbUrl string) *pg.DB { opt, err := pg.ParseURL(dbUrl) common.CheckError(err) + file, err := os.OpenFile("querys.txt", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0666) + common.CheckError(err) + QueryLogger := log.New(file, "Query: ", log.Ldate|log.Ltime|log.Lshortfile) conn := pg.Connect(opt) + loggerHook := LoggerHook{QueryLogger} + conn.AddQueryHook(&loggerHook) db := conn.WithContext(ctx) fmt.Println("Successfully connected!") diff --git a/querys.txt b/querys.txt new file mode 100644 index 0000000..2c29039 --- /dev/null +++ b/querys.txt @@ -0,0 +1,28 @@ +Query: 2022/06/15 18:36:12 db.go:24: [83 69 76 69 67 84 32 34 117 115 101 114 115 34 46 34 105 100 34 44 32 34 117 115 101 114 115 34 46 34 100 97 116 101 95 99 114 101 97 116 101 100 34 44 32 34 117 115 101 114 115 34 46 34 100 97 116 101 95 117 112 100 97 116 101 100 34 44 32 34 117 115 101 114 115 34 46 34 105 115 95 97 99 116 105 118 101 34 44 32 34 117 115 101 114 115 34 46 34 117 115 101 114 110 97 109 101 34 44 32 34 117 115 101 114 115 34 46 34 112 97 115 115 119 111 114 100 34 44 32 34 117 115 101 114 115 34 46 34 101 109 97 105 108 34 32 70 82 79 77 32 34 117 115 101 114 115 34 32 65 83 32 34 117 115 101 114 115 34 32 87 72 69 82 69 32 40 34 101 109 97 105 108 34 32 61 32 39 39 41] +Query: 2022/06/15 18:36:20 db.go:24: [66 69 71 73 78] +Query: 2022/06/15 18:36:20 db.go:24: [83 69 76 69 67 84 32 34 117 115 101 114 115 34 46 34 105 100 34 44 32 34 117 115 101 114 115 34 46 34 100 97 116 101 95 99 114 101 97 116 101 100 34 44 32 34 117 115 101 114 115 34 46 34 100 97 116 101 95 117 112 100 97 116 101 100 34 44 32 34 117 115 101 114 115 34 46 34 105 115 95 97 99 116 105 118 101 34 44 32 34 117 115 101 114 115 34 46 34 117 115 101 114 110 97 109 101 34 44 32 34 117 115 101 114 115 34 46 34 112 97 115 115 119 111 114 100 34 44 32 34 117 115 101 114 115 34 46 34 101 109 97 105 108 34 32 70 82 79 77 32 34 117 115 101 114 115 34 32 65 83 32 34 117 115 101 114 115 34 32 87 72 69 82 69 32 40 34 117 115 101 114 110 97 109 101 34 32 61 32 39 121 117 114 109 97 39 41 32 79 82 32 40 34 101 109 97 105 108 34 32 61 32 39 39 41] +Query: 2022/06/15 18:36:20 db.go:22: ERROR #23502 null value in column "email" of relation "users" violates not-null constraint +Query: 2022/06/15 18:36:20 db.go:24: [67 79 77 77 73 84] +Query: 2022/06/15 18:36:20 db.go:22: pg: transaction has already been committed or rolled back +Query: 2022/06/15 18:37:07 db.go:24: [66 69 71 73 78] +Query: 2022/06/15 18:38:44 db.go:28: BEGIN +Query: 2022/06/15 18:38:44 db.go:28: SELECT "users"."id", "users"."date_created", "users"."date_updated", "users"."is_active", "users"."username", "users"."password", "users"."email" FROM "users" AS "users" WHERE ("username" = 'fjurma12@gmail.com') OR ("email" = '') +Query: 2022/06/15 18:38:44 db.go:22: ERROR #23502 null value in column "email" of relation "users" violates not-null constraint +Query: 2022/06/15 18:38:44 db.go:28: COMMIT +Query: 2022/06/15 18:38:44 db.go:22: pg: transaction has already been committed or rolled back +Query: 2022/06/15 18:38:49 db.go:28: BEGIN +Query: 2022/06/15 18:38:49 db.go:28: SELECT "users"."id", "users"."date_created", "users"."date_updated", "users"."is_active", "users"."username", "users"."password", "users"."email" FROM "users" AS "users" WHERE ("username" = '') OR ("email" = 'fjurma12@gmail.com') +Query: 2022/06/15 18:38:49 db.go:22: ERROR #23502 null value in column "username" of relation "users" violates not-null constraint +Query: 2022/06/15 18:38:49 db.go:28: COMMIT +Query: 2022/06/15 18:38:49 db.go:22: pg: transaction has already been committed or rolled back +Query: 2022/06/15 18:39:31 db.go:28: BEGIN +Query: 2022/06/15 18:39:31 db.go:28: SELECT "users"."id", "users"."date_created", "users"."date_updated", "users"."is_active", "users"."username", "users"."password", "users"."email" FROM "users" AS "users" WHERE ("username" = 'yurma') OR ("email" = 'fjurma12@gmail.com') +Query: 2022/06/15 18:39:31 db.go:28: INSERT INTO "users" ("id", "date_created", "date_updated", "is_active", "username", "password", "email") VALUES ('b2c8bb5e-fcb7-4e91-9c20-2441dd6a1422', '2022-06-15 16:39:31.6930018+00:00:00', '2022-06-15 16:39:31.6930018+00:00:00', TRUE, 'yurma', '$2a$10$Uf/PlQtyt6J671sdvDskm.6m5OTgMUPNQlaqyG8rUQamGnR3Zi2Z.', 'fjurma12@gmail.com') +Query: 2022/06/15 18:39:31 db.go:28: COMMIT +Query: 2022/06/15 18:39:31 db.go:22: pg: transaction has already been committed or rolled back +Query: 2022/06/15 18:40:26 db.go:28: SELECT "users"."id", "users"."date_created", "users"."date_updated", "users"."is_active", "users"."username", "users"."password", "users"."email" FROM "users" AS "users" WHERE ("email" = '') +Query: 2022/06/15 18:40:36 db.go:28: SELECT "users"."id", "users"."date_created", "users"."date_updated", "users"."is_active", "users"."username", "users"."password", "users"."email" FROM "users" AS "users" WHERE ("email" = 'fjurma12@gmail.com') +Query: 2022/06/15 18:42:30 db.go:28: BEGIN +Query: 2022/06/15 18:42:30 db.go:28: SELECT "users"."id", "users"."date_created", "users"."date_updated", "users"."is_active", "users"."username", "users"."password", "users"."email" FROM "users" AS "users" WHERE ("email" = 'fjurma12@gmail.com') +Query: 2022/06/15 18:42:30 db.go:28: COMMIT +Query: 2022/06/15 18:42:30 db.go:22: pg: transaction has already been committed or rolled back