checkpoint(cover): backend ready before AI development

This commit is contained in:
Leons Aleksandrovs
2025-07-12 14:38:21 +03:00
parent 6cf30698b0
commit b88b0cf7da
10 changed files with 117 additions and 7 deletions
-2
View File
@@ -1,2 +0,0 @@
# This is secret key for jwt signature
JWT_SECRET=just a random string here
+1
View File
@@ -19,4 +19,5 @@ func LoadEnv() {
Env["db"] = defaultValue(os.Getenv("POSTGRES_DB"), "postgresql://postgres:postgres@db:5432/cover-letter")
Env["JWT_SECRET"] = defaultValue(os.Getenv("JWT_SECRET"), "just a random string here")
Env["Environment"] = defaultValue(os.Getenv("Environment"), "dev")
Env["CHATGPT_KEY"] = defaultValue(os.Getenv("CHATGPT_KEY"), "")
}
+55
View File
@@ -0,0 +1,55 @@
package cover
import (
"backend/models/template"
"backend/utils"
"backend/utils/jwt"
res "backend/utils/responses"
"net/http"
"github.com/gin-gonic/gin"
"github.com/go-playground/validator/v10"
)
var validate = validator.New()
func Get(c *gin.Context) {
}
type CoverPost struct {
TemplateId string `json:"templateId" validate:"required,number,min=1"`
Application string `json:"application" validate:"required,min=50"`
}
func Post(c *gin.Context) {
// Receive data from frontend, check if data is okay, hash password, call model
var data CoverPost
if err := utils.BindAndValidate(&data, c); err != nil {
res.Error(c, err.Error(), http.StatusBadRequest)
return
}
// Get user data from the token
user, err := jwt.GetUser(c)
if err != nil {
res.NeedsToLogin(c)
return
}
// Get tempalte
templates, err := template.Get("user_id = $1 AND id = $2", user.Id, data.TemplateId)
if err != nil {
res.Error(c, err.Error(), http.StatusInternalServerError)
return
}
// Call chat and ask for cover letter nicely
res.Success(c, templates)
}
func Put(c *gin.Context) {
}
func Delete(c *gin.Context) {
}
+5
View File
@@ -1,6 +1,7 @@
package routes
import (
"backend/controllers/cover"
"backend/controllers/template"
"backend/controllers/user"
"backend/middleware"
@@ -29,5 +30,9 @@ func SetupRoutes() *gin.Engine {
// PUT (Edit)
// DELETE (Delete)
// Cover letter routes
covers := auth.Group("/cover")
covers.POST("", cover.Post)
return r
}
+1
View File
@@ -0,0 +1 @@
package chatgpt
+29
View File
@@ -0,0 +1,29 @@
package utils
import (
"fmt"
"github.com/gin-gonic/gin"
"github.com/go-playground/validator/v10"
)
var validate = validator.New()
func BindAndValidate(data any, c *gin.Context) error {
fmt.Println("🔍 BindAndValidate called")
if err := c.ShouldBindJSON(data); err != nil {
fmt.Println("❌ Bind error:", err)
return err
}
fmt.Println("✅ Bind success:", data)
if err := validate.Struct(data); err != nil {
fmt.Println("❌ Validation error:", err)
return err
}
fmt.Println("✅ Validation success")
return nil
}