Added users support

This commit is contained in:
2025-08-19 07:24:18 +02:00
parent 541b181c87
commit 20b62e7312
18 changed files with 592 additions and 35 deletions

View File

@@ -0,0 +1,14 @@
class CreateUsers < ActiveRecord::Migration[7.1]
def change
create_table :users do |t|
t.string :username
t.string :email
t.string :password_digest
t.references :company, null: false, foreign_key: true
t.timestamps
end
add_index :users, :username, unique: true
add_index :users, :email, unique: true
end
end

View File

@@ -0,0 +1,6 @@
class AddEmailToUsers < ActiveRecord::Migration[7.1]
def change
add_column :users, :email, :string
add_index :users, :email, unique: true
end
end

15
db/schema.rb generated
View File

@@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema[7.1].define(version: 2025_07_04_092438) do
ActiveRecord::Schema[7.1].define(version: 2025_07_31_114403) do
create_table "companies", force: :cascade do |t|
t.string "name"
t.string "id_number"
@@ -66,8 +66,21 @@ ActiveRecord::Schema[7.1].define(version: 2025_07_04_092438) do
t.index ["company_id"], name: "index_teams_on_company_id"
end
create_table "users", force: :cascade do |t|
t.string "username"
t.string "password_digest"
t.integer "company_id", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "email"
t.index ["company_id"], name: "index_users_on_company_id"
t.index ["email"], name: "index_users_on_email", unique: true
t.index ["username"], name: "index_users_on_username", unique: true
end
add_foreign_key "reservations", "companies"
add_foreign_key "reservations", "customers", column: ["customer_first_name", "customer_surname", "customer_original_phone"], primary_key: ["first_name", "surname", "original_phone"]
add_foreign_key "reservations", "teams"
add_foreign_key "teams", "companies"
add_foreign_key "users", "companies"
end

View File

@@ -7,3 +7,34 @@
# ["Action", "Comedy", "Drama", "Horror"].each do |genre_name|
# MovieGenre.find_or_create_by!(name: genre_name)
# end
# Create a default company if none exists
default_company = Company.find_or_create_by!(name: 'Default Company') do |company|
company.id_number = 'COMP001'
company.vat_number = 'VAT001'
company.address_line_one = '123 Main Street'
company.city = 'Default City'
company.country = 'Default Country'
end
# Create default teams for the company
teams_data = [
{ name: 'Team Alpha' },
{ name: 'Team Beta' },
{ name: 'Team Gamma' }
]
teams_data.each do |team_attrs|
Team.find_or_create_by!(name: team_attrs[:name], company: default_company)
end
puts "Seeded default company: #{default_company.name}"
puts "Seeded #{default_company.teams.count} teams"
# Create default user for the company
default_user = User.find_or_create_by!(username: 'admin', company: default_company) do |user|
user.email = 'admin@company.ba'
user.password = 'password123'
user.password_confirmation = 'password123'
end
puts "Seeded default user: #{default_user.username} (#{default_user.email})"