Cách tạo 1 database với Lotus Framework
Tiếp tục bài viết lần trước về Bắt đầu một application với Lotus Framework chúng ta sẽ tìm hiểu thêm từng bước để xây dựng được 1 ứng dụng. Ở bài này mình xin đi vào việc sử dụng sqlite để tạo database, áp dụng lotus-model để tạo entity, sử dụng repository để giao tiếp với database và mapping dữ ...
Tiếp tục bài viết lần trước về Bắt đầu một application với Lotus Framework chúng ta sẽ tìm hiểu thêm từng bước để xây dựng được 1 ứng dụng. Ở bài này mình xin đi vào việc sử dụng sqlite để tạo database, áp dụng lotus-model để tạo entity, sử dụng repository để giao tiếp với database và mapping dữ liệu.
Mình sẽ tạo ra 1 seeds database về users
Install ở Gemfile
group :development, :test do gem 'sqlite3' end
Bước 1 Tạo database
Vào folder root rallyapp tạo file database.rb
require "sqlite3" # Tạo mới database sử dụng SQLite3 db = SQLite3::Database.new 'rallyapp_development.db' rows = db.execute <<-SQL create table users ( name varchar(255), email varchar(255), gender int, about text, image_url varchar(255) ); SQL
Bước 2 Update database url
Vào file rallyapp/config update file .env.development để update url thành
RALLYAPP_DATABASE_URL="sqlite://db/rallyapp_development"
thay vì sử dụng
RALLYAPP_DATABASE_URL="file:///db/rallyapp_development"
Bước 3:
1) Truy cập vào folder rallyapp/lib/rallyapp
- Tạo ra 1 User Entity. Ở folder entities tạo 1 file user.rb 1 Entity bao gồm các attributes giống như các fields trong User model.
require 'lotus/entity' class User include Lotus::Entity attributes :name, :email, :gender, :about, :image_url end
- Tạo ra 1 User Repository Ở folder repositories tạo 1 file user.rb Repository nó cung cấp một API chuẩn để truy vấn và thực hiện các xử lý trên một cơ sở dữ liệu
require 'lotus/repository' class UserRepository include Lotus::Repository end
2) Truy cập vào folder rallyapp/lib/config. Ở file mapping.rb
- Mapping kiểu dữ liệu của attributes ``` collection :users do entity User repository UserRepository
attribute :id, Integer
attribute :name, String
attribute :email, String
attribute :gender, Integer
attribute :about, String
attribute :image_url, String
end
**3) Truy cập vào folder rallyapp/lib Tại file rallyapp.rb** Các bạn mở dòng comment. Sử dụng mapping này
mapping "#{dir}/config/mapping"
Và comment lại phần mapping trực tiếp tại file. [Xem code tại github để biết rõ hơn](https://github.com/mymai91/lotus-rally-app/tree/create-database) ### Bước 4 Viết migration để tạo connect database Vào file rallyapp/lib/rallyapp Tạo 1 file migrator.rb ```ruby require_relative '../../config/environment' module Leoleo class Migrator require 'sequel' def self.migrate! db = Sequel.connect(ENV['LEOLEO_DATABASE_URL']) end end end
Bước 5: Tạo seeds data
Vào rallyapp/db Tạo file seeds.rb
Update data seeds vào seeds.rb
[ { "name": "Spears Russell", "email": "spearsrussell@yogasm.com", "gender": 1, "about": "I'm Spears", "image_url": "http://placehold.it/32x32" }, { "name": "Ann York", "email": "annyork@yogasm.com", "gender": 1, "about": "I'm Ann York", "image_url": "http://placehold.it/32x32" } ].each do |user_attrs| user = User.new(user_attrs) UserRepository.persist(user) end
Bước 6: Định nghĩa một task ở rake file để run migration
Truy cập vào rallyapp/Rakefile
Add task này vào file Rakefile
namespace :db do task :migrate do require_relative 'lib/rallyapp/migrator' RallyApp::Migrator.migrate! end task :seed => [:migrate] do load 'db/seeds.rb' end end
Sau đó chạy lệnh sau:
bundle exec rake db:seed
Cảm ơn các bạn đã đọc. Hy vọng qua bài này giúp bạn hiểu thêm về Lotus Framework
Bài tiếp theo sẽ là bài hướng dẫn cách tạo API với Lotus Framework
Các bạn xem code chi tiết tại đây