Como era em inglês o codigo e comentário, não falava do README, eu deixei ele em português.
Eu acredito que em um projeto real, eu mesmo iria hospedar o servidor, sem a necessidade do cliente ter que fazer algum dos seguintes passos.
Provavelmente eu iria usar o Google Cloud ou AWS
Mas como é um teste, segue o passo a posso de como executar o projeto em sua máquina.
Você precisará do Go, air (Não é obrigatório) e PostgreSQL instalados em sua máquina. A instalação para cada sistema operacional é diferente. Por isso eu vou deixar aqui um link para você instalar o Go na sua maquina.
Lembra quando eu disse que você precisaria do PostgresSQL? Ele é o seu banco de dados.
Você pode ver uma lista de downloads do site oficial do PostgreSQL Clique aqui.
git clone https://github.com/jhamiltonjunior/todo-list-backend.git
cd todo-list-backend
git clone <link_do_repositório>
Vai baixar o repositório em sua maquina
cd todo-list-backend
Isso fará você navegar até o diretório que foi clonado
Retire a extensão .exemple
remova os comentarios e deixe o DB_SOURCE
como mostrado abaixo, :
DB_SOURCE = "postgres://postgres:0000@localhost/vibbra?sslmode=disable"
Em seu terminal linux digite:
sudo passwd postgres
Nova senha: 0000
Redigite a nova senha: 0000
Se você colocar uma senha diferente de 0000
não esqueça de altera no DB_SOURCE
em ...postgres:0000@...
Ou você pode ver esse video
Veja esse video para alterar a senha no Windows.
O video não é meu Ok?!
Veja esse video para alterar a senha no MacOS.
O video não é meu Ok?!
No seu terminal linux use o comando :
sudo -u postgres psql
Ainda dentro do postgres rode o camando para criar o banco de dados:
CREATE DATABASE vibbra;
vibbra
é o nome do banco de dados, se você alterar o nome do banco de dados, altere também o DB_SOURCE
em .../vibbra...
Para criar a tabela de Usuário, Lista e Item Da Lista, rode os seguintes comandos, na mesma ordem listada abaixo:
CREATE TABLE user_schema(
user_id INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
username VARCHAR(30) UNIQUE NOT NULL,
fullname VARCHAR(30) NOT NULL,
email TEXT UNIQUE NOT NULL,
passwd VARCHAR(20) NOT NULL,
created_at TIMESTAMP DEFAULT NOW() NOT NULL,
updated_at TIMESTAMP DEFAULT NOW()
);
CREATE TABLE list_schema(
list_id INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
title VARCHAR(60) NOT NULL,
user_id INT,
FOREIGN KEY(user_id)
REFERENCES user_schema(user_id)
ON DELETE CASCADE
ON UPDATE CASCADE
);
CREATE TABLE list_item_schema(
list_item_id INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
list_id INT,
user_id INT,
title VARCHAR(60) NOT NULL,
description TEXT NOT NULL,
created_at TIMESTAMP DEFAULT NOW() NOT NULL,
FOREIGN KEY(list_id)
REFERENCES list_schema(list_id)
ON UPDATE CASCADE
ON DELETE CASCADE,
FOREIGN KEY(user_id)
REFERENCES user_schema(user_id)
ON UPDATE CASCADE
);
\q
Certifique-se de estar na raiz do projeto e rode os seguintes comando:
go get -d -v ./...
# Maybe you need this
go mod tidy
Ou você pode tentar, instalar todos manulamente
go mod tidy
go get -u github.com/dgrijalva/jwt-go &&
go get -u github.com/cosmtrek/air &&
go get -u github.com/gorilla/mux &&
go get -u github.com/jmoiron/sqlx &&
go get -u github.com/joho/godotenv &&
go get -u github.com/lib/pq
O air
é um live reload para o Golang, dessa forma você não terá que ficar iniciando o servido toda hora
Apenas para testar as rotas:
go run main.go
go run main.go
Vai executar o servidor
Se você quiser executar o servidor em modo de desenvolvimento, use o air
, na raiz do projeto rode o comando no terminal:
air