This repository has been archived on 2026-01-02. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
cover-letter-templater/backend/controllers/template/template.go
Leons Aleksandrovs e35bf46dac feat(api): add return for all user templates
BREAKING: Template api will return different variables in template
object
2025-07-10 20:36:37 +03:00

86 lines
1.8 KiB
Go

package template
import (
"backend/models/template"
"backend/utils/jwt"
res "backend/utils/responses"
"net/http"
"github.com/gin-gonic/gin"
"github.com/go-playground/validator/v10"
)
type TemplateForm struct {
Name string `json:"name" validate:"required,min=2,max=50"`
Template string `json:"template" validate:"required"`
}
var validate = validator.New()
func Create(c *gin.Context) {
// Receive data from frontend, check if data is okay, hash password, call model
var data TemplateForm
if err := c.ShouldBindJSON(&data); err != nil {
res.Error(c, err.Error(), http.StatusInternalServerError)
return
}
// Validate data
if err := validate.Struct(data); err != nil {
res.Error(c, err.Error(), http.StatusBadRequest)
return
}
// Get user id
user, err := jwt.GetUser(c)
if err != nil {
res.NeedsToLogin(c)
return
}
// Check if template already exists
templates, err := template.FindByName(data.Name, user.Id)
if err != nil {
res.Error(c, err.Error(), http.StatusInternalServerError)
return
}
// Check if template already exists with that name
if len(templates) > 0 {
res.Error(c, "Template already exists", http.StatusBadRequest)
return
}
// Create in database
if err := template.Create(data.Name, data.Template, user.Id); err != nil {
res.Error(c, err.Error(), http.StatusInternalServerError)
return
}
res.Success(c, gin.H{"message": "Successfully created template"})
}
func Get(c *gin.Context) {
// Get user from context
user, err := jwt.GetUser(c)
if err != nil {
res.NeedsToLogin(c)
return
}
// Get all user templates
templates, err := template.Get("user_id = $1", user.Id)
if err != nil {
res.Error(c, err.Error(), http.StatusInternalServerError)
return
}
res.Success(c, templates)
}
func Update(c *gin.Context) {
}
func Delete(c *gin.Context) {
}