1.0.3 - Updated users and events table structure

pull/2/head
Nilo Roberto C Paim 2021-12-04 08:51:58 -03:00
parent 6a1f3e00ba
commit 530a696b8c
6 changed files with 126 additions and 132 deletions

View File

@ -15,7 +15,7 @@ import (
func Version(c *fiber.Ctx) error { func Version(c *fiber.Ctx) error {
return c.JSON(fiber.Map{ return c.JSON(fiber.Map{
"version": "1.0.2", "version": "1.0.3",
}) })
} }
@ -78,12 +78,20 @@ func AddUser(c *fiber.Ctx) error {
return err return err
} }
if data["name"] == "" || data["email"] == "" || data["password"] == "" || data["channel"] == "" {
c.SendStatus(fiber.StatusBadRequest)
return c.JSON(fiber.Map{
"message": "Nome, E-Mail, Senha e Nome do Canal devem ser informados",
})
}
passwd, _ := utils.HashPassword(data["password"]) passwd, _ := utils.HashPassword(data["password"])
user := models.User{ user := models.User{
Name: data["name"], Name: data["name"],
Email: data["email"], Email: data["email"],
Password: passwd, Password: passwd,
Channel: data["channel"],
UserType: data["usertype"], UserType: data["usertype"],
Blocked: "N", Blocked: "N",
Cancelled: "N", Cancelled: "N",
@ -141,9 +149,9 @@ func GetAllUsers(c *fiber.Ctx) error {
database.DB.Find(&users) database.DB.Find(&users)
if len(users) == 0 { if len(users) == 0 {
c.Status(fiber.StatusUnauthorized) c.Status(fiber.StatusNotFound)
return c.JSON(fiber.Map{ return c.JSON(fiber.Map{
"message": "Sem autorização", "message": "Nenhum usuário encontrado",
}) })
} }

View File

@ -13,7 +13,6 @@ import (
func AddEvent(c *fiber.Ctx) error { func AddEvent(c *fiber.Ctx) error {
var data map[string]string var data map[string]string
var audience int
var startdt time.Time var startdt time.Time
_, err := utils.ProcessToken(c) _, err := utils.ProcessToken(c)
@ -45,21 +44,6 @@ func AddEvent(c *fiber.Ctx) error {
}) })
} }
if data["audience"] == "" {
c.Status(fiber.StatusBadRequest)
return c.JSON(fiber.Map{
"message": "Audience not defined",
})
} else {
audience, err = strconv.Atoi(data["audience"])
if err != nil {
c.Status(fiber.StatusBadRequest)
return c.JSON(fiber.Map{
"message": "Invalid value for audience",
})
}
}
dateformat := "02/01/2006 15:04" dateformat := "02/01/2006 15:04"
if data["startDt"] == "" { if data["startDt"] == "" {
c.Status(fiber.StatusBadRequest) c.Status(fiber.StatusBadRequest)
@ -77,12 +61,11 @@ func AddEvent(c *fiber.Ctx) error {
} }
event := models.Event{ event := models.Event{
Name: data["name"], Name: data["name"],
UserId: user.Id, UserId: user.Id,
User: user, User: user,
ExpectedAudience: audience, ExpectedDate: startdt,
ExpectedDate: startdt, EventType: data["eventtype"],
EventType: data["eventtype"],
} }
database.DB.Create(&event) database.DB.Create(&event)

View File

@ -1,53 +1,55 @@
package database package database
import ( import (
"api/models" "api/models"
"fmt" "fmt"
"log" "log"
"os" "os"
"github.com/joho/godotenv" "github.com/joho/godotenv"
"gorm.io/driver/mysql" "gorm.io/driver/mysql"
"gorm.io/gorm" "gorm.io/gorm"
"gorm.io/gorm/logger" "gorm.io/gorm/logger"
) )
// Our database // Our database
var DB *gorm.DB var DB *gorm.DB
// NewDatabase - returns a pointer to a new database connection // ConnectDB - returns a pointer to a new database connection
func ConnectDB() error { func ConnectDB() error {
var erre error var erre error
log.Println("Getting environment values") log.Println("Getting environment values")
erre = godotenv.Load() erre = godotenv.Load()
if erre != nil { if erre != nil {
log.Printf("Error getting env, not comming through %v\n", erre) log.Printf("Error getting env, not comming through %v\n", erre)
return erre return erre
} }
DBURL := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8&parseTime=True&loc=Local", os.Getenv("DB_USER"), os.Getenv("DB_PASSWORD"), os.Getenv("DB_HOST"), os.Getenv("DB_PORT"), os.Getenv("DB_NAME")) DBURL := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8&parseTime=True&loc=Local", os.Getenv("DB_USER"), os.Getenv("DB_PASSWORD"), os.Getenv("DB_HOST"), os.Getenv("DB_PORT"), os.Getenv("DB_NAME"))
log.Println("Opening connection to database") log.Println("Opening connection to database")
db, err := gorm.Open(mysql.Open(DBURL), &gorm.Config{ db, err := gorm.Open(mysql.Open(DBURL), &gorm.Config{
Logger: logger.Default.LogMode(logger.Silent), Logger: logger.Default.LogMode(logger.Silent),
}) })
if err != nil { if err != nil {
return err return err
} }
if result := db.AutoMigrate(&models.User{}); result != nil { log.Println("Migrating database tables")
return err
} if result := db.AutoMigrate(&models.User{}); result != nil {
return result
if result := db.AutoMigrate(&models.Event{}); result != nil { }
return result
} if result := db.AutoMigrate(&models.Event{}); result != nil {
return result
DB = db }
return nil DB = db
}
return nil
}

View File

@ -1,14 +1,13 @@
package models package models
import "time" import "time"
type Event struct { type Event struct {
Id uint `gorm:"primary key" json:"id"` Id uint `gorm:"primary key" json:"id"`
Name string `gorm:"size:40;not null" json:"name"` Name string `gorm:"size:40;not null" json:"name"`
Description string `gorm:"not null" json:"description"` Description string `gorm:"not null" json:"description"`
ExpectedAudience int `gorm:"size:40;not null" json:"audience"` ExpectedDate time.Time `gorm:"not null" json:"startDt"`
ExpectedDate time.Time `gorm:"not null" json:"startDt"` UserId uint `gorm:"size:40;not null" json:"user"`
UserId uint `gorm:"size:40;not null" json:"user"` User User
User User EventType string `gorm:"size:1;not null;default:O" json:"eventtype"` // O = Open, C = Closed
EventType string `gorm:"size:1;not null;default:U" json:"eventtype"` }
}

View File

@ -1,12 +1,13 @@
package models package models
type User struct { type User struct {
Id uint `gorm:"primary key" json:"id"` Id uint `gorm:"primary key" json:"id"`
Name string `gorm:"size:40;not null" json:"name"` Name string `gorm:"size:40;not null" json:"name"`
Email string `gorm:"size:40;not null;unique" json:"email"` Email string `gorm:"size:40;not null;unique" json:"email"`
Password []byte `gorm:"size:100;not null;" json:"-"` Password []byte `gorm:"size:100;not null;" json:"-"`
UserType string `gorm:"size:1;not null;default:U" json:"usertype"` Channel string `gorm:"size:40;not null" json:"channel"`
Blocked string `gorm:"size:1;not null;default:N" json:"blocked"` UserType string `gorm:"size:1;not null;default:U" json:"usertype"`
Cancelled string `gorm:"size:1;not null;default:N" json:"cancelled"` Blocked string `gorm:"size:1;not null;default:N" json:"blocked"`
CreatedBy string `gorm:"size:15;not null;default:Manual" json:"createdby"` Cancelled string `gorm:"size:1;not null;default:N" json:"cancelled"`
} CreatedBy string `gorm:"size:15;not null;default:Manual" json:"createdby"`
}

View File

@ -1,28 +1,29 @@
package routes package routes
import ( import (
"api/controllers" "api/controllers"
"os" "os"
"github.com/gofiber/fiber/v2" "github.com/gofiber/fiber/v2"
jwtware "github.com/gofiber/jwt/v3" jwtware "github.com/gofiber/jwt/v3"
) )
func Setup(app *fiber.App) { func Setup(app *fiber.App) {
app.Get("/version", controllers.Version) app.Get("/version", controllers.Version)
app.Post("/login", controllers.Login) app.Post("/login", controllers.Login)
app.Post("/register", controllers.AddUser)
protected := app.Group("/")
protected.Use(jwtware.New(jwtware.Config{ protected := app.Group("/")
SigningKey: []byte(os.Getenv("API_SECRET")), protected.Use(jwtware.New(jwtware.Config{
})) SigningKey: []byte(os.Getenv("API_SECRET")),
}))
protected.Get("user", controllers.GetOwnUser)
protected.Get("users", controllers.GetAllUsers) protected.Get("user", controllers.GetOwnUser)
protected.Post("user", controllers.AddUser) protected.Get("users", controllers.GetAllUsers)
protected.Post("user", controllers.AddUser)
protected.Post("event", controllers.AddEvent)
} protected.Post("event", controllers.AddEvent)
}