Aula 07 - Golang - Fiber - Migrations

Na aula passada criamos a estrutura que vai representar um usuário, isto é, a struct User. O banco de dados está vazio, vamos criar a tabela User no banco, e para isso, vamos usar o Gorm.

fiber-project/database/connect.go  


package database

import (
	"fmt"

	"gorm.io/driver/mysql"
	"gorm.io/gorm"
        "fiber-project/models"
)

func Connect() {
	var dsn = "toticavalcanti:mysql1234@/fluent_admin?charset=utf8mb4&parseTime=True&loc=Local"
	var v = "Não conseguiu conectar ao banco de dados"
	connection, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})

	if err != nil {
		panic(v)
	}

        connection.AutoMigrate(&models.User{})
	fmt.Println("Conexão OK!")
}

Se o projeto não estiver rodando, execute o air, que instalamos na aula passada.

Veja no banco mysql, que a tabela foi criada. Agora vamos fazer com que o campo email seja único. Usaremos o uma anotação do Gorm para isso.

fiber-project/models/user.go  


package models

type User struct {
    Id uint
    FirstName string
    LastName string
    Email string `gorm:"unique"`
    Password string
}
Dê um refresh no banco mysql e veja a mudança no campo email. Essa é a forma como adicionamos configurações extras, poderíamos usar o gorm.Model.

fiber-project/models/user.go  


package models

import "gorm.io/gorm"
type User struct {
    gorm.Model
    FirstName string
    LastName string
    Email string `"unique"`
    Password string
}
O gorm.Model gera vários campos automaticamente, o ID, o CreatedAt, o UpdatedAt e DeletedAt. Se você quiser, pode usar, eu vou manter o mais simples, e deixar como tava antes. É isso, na próxima aula vamos refatorar a função Register() no arquivo fiber-project/controllers/authController.go.

Nos vemos na próxima então ;)

Até lá!

Código da aula: Github

Redes Sociais:

facebook          

Novamente deixo meus link de afiliados:

Hostinger

Digital Ocean

One.com

Obrigado, até a próxima e bons estudos. ;)