Skip to content

klauslube/Raro-Food

Repository files navigation

raro-food

Projeto prático para aulas dos fundamentos de modelagem de banco de dados.

setup

Antes de iniciar a aplicação, recomenda-se a execução da seguinte sequência de comandos:

rvm use 3.1.2
cd klaus-lube-exercicio-semana-8
bundle install
rails db:create
rails db:migrate
rails db:seed

Para iniciar o servidor, recomenda-se a utilização do comando ./bin/dev, pois ele garante os assets serão todos devidamente processados.

Alguns comandos utilizados para nossa aplicação:

Verificar versão do ruby utilizada:

rvm use 3.1.2

Verificar versão do Yarn

yarn -v

Criando uma nova aplicação rails:

rails new raro_food -c=tailwind -d=mysql -j=esbuild
cd raro_food
bin/rails db:create db:migrate db:seed

Adicionando Unit Test

Adicione o seguinte trecho no Gemfile:

group :development, :test do
  # ....
  gem 'rspec-rails'
  gem 'shoulda-matchers'
  gem 'faker'
end

Execute os seguintes comandos:

bin/rails generate rspec:install
bin/rails db:migrate db:test:prepare
bin/rails generate rspec:model State

No arquivo gerado rails_helper.rb

#...
Shoulda::Matchers.configure do |config|
  config.integrate do |with|
    with.test_framework :rspec
    with.library :rails
  end
end

Adicionando Rubocop

No arquivo Gemfile:

gem 'rubocop-rails', require: false

group :development do
  # ...
  gem 'rubocop-rails', require: false
end

Na raiz do projeto crie um arquivo .rubocop.yml com o seguinte conteúdo:

require: rubocop-rails

AllCops:
  NewCops: enable
  TargetRubyVersion: 3.1.2

Ao executar o comando abaixo no terminal, serão listados os erros encontrados:

rubocop

Para corrigí-los, pode ser executado o comando:

rubocop -A

Implementação

Na aplicação foi adicionado 4 entidades novas:

1- Card

  • customerId (FK) INT NOT NULL
  • name STRING NOT NULL
  • card number STRING NOT NULL
  • CVV Code STRING NOT NULL
  • card type INT NOT NULL
  • expiration date STRING NOT NULL

2- Payment

  • cardId (FK) INT NOT NULL
  • payment method INT NOT NULL
  • paid amount DECIMAL NOT NULL
  • status INT NOT NULL

3- Coupon

  • administratorId (FK) INT NOT NULL
  • code STRING NOT NULL
  • name STRING NOT NULL
  • description TEXT NOT NULL
  • start date DATE NOT NULL
  • end date DATE NOT NULL
  • discount amount DECIMAL NOT NULL

4- CustomerOrder

  • customerId (PK) INT NOT NULL
  • orderId (PK) INT NOT NULL
  • couponId (FK) INT NOT NULL
  • paymentId (FK) INT NOT NULL

Relacionamentos entre tabelas

  • Relacionamento 1:1

    • Pagamento UTILIZA Cupom
    • ClientePedido EXIGE Pagamento (join table)
  • Relacionamento 1:N

    • Cliente CADASTRA Cartão
    • Administrador CADASTRA Cupom
    • Cliente REALIZA Pedido
    • ClientePedido UTILIZA Cupom

Problemas econtrados

No projeto, ao ser clonado foi preciso mudar o socket e o password no arquivo database.yml, só assim a aplicação consegue rodar rails db:create.

Mas decidi não subir o arquivo database.yml e nem schema como foi informado em aula. Deixando o setup igual ao clonado inicialmente.


Desafios

Nesse projeto, tive como maior desafio a interpretação do diagrama de entidade-relacionamento e codificar corretamente as relações entre entidades, principalmente a Join table, a qual tive dúvida se devia criar um model para ela ou não.


AUTOR

Este projeto foi desenvolvido por Klaus Lube, como parte do exercício semanal da Raro Academy(Professor Guilherme Andrade) para aprimorar as habilidades em Active Record, models, migrations e rails.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published