diff --git a/Gemfile b/Gemfile index c004f4ca..91bb17b3 100644 --- a/Gemfile +++ b/Gemfile @@ -5,3 +5,5 @@ gem "sinatra-activerecord" gem "sqlite3" gem "pry" gem "require_all" +gem "rake" +gem "activerecord" diff --git a/Gemfile.lock b/Gemfile.lock index 9589226d..d074a107 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,56 +1,58 @@ GEM remote: https://rubygems.org/ specs: - activemodel (6.0.3.1) - activesupport (= 6.0.3.1) - activerecord (6.0.3.1) - activemodel (= 6.0.3.1) - activesupport (= 6.0.3.1) - activesupport (6.0.3.1) + activemodel (6.1.1) + activesupport (= 6.1.1) + activerecord (6.1.1) + activemodel (= 6.1.1) + activesupport (= 6.1.1) + activesupport (6.1.1) concurrent-ruby (~> 1.0, >= 1.0.2) - i18n (>= 0.7, < 2) - minitest (~> 5.1) - tzinfo (~> 1.1) - zeitwerk (~> 2.2, >= 2.2.2) - coderay (1.1.1) - concurrent-ruby (1.1.6) - i18n (1.8.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + zeitwerk (~> 2.3) + coderay (1.1.3) + concurrent-ruby (1.1.8) + i18n (1.8.7) concurrent-ruby (~> 1.0) - method_source (0.8.2) - minitest (5.14.1) - mustermann (1.0.3) - pry (0.10.4) - coderay (~> 1.1.0) - method_source (~> 0.8.1) - slop (~> 3.4) + method_source (1.0.0) + minitest (5.14.3) + mustermann (1.1.1) + ruby2_keywords (~> 0.0.1) + pry (0.13.1) + coderay (~> 1.1) + method_source (~> 1.0) rack (2.2.3) - rack-protection (2.0.7) + rack-protection (2.1.0) rack - require_all (1.3.3) - sinatra (2.0.7) + rake (13.0.3) + require_all (3.0.0) + ruby2_keywords (0.0.4) + sinatra (2.1.0) mustermann (~> 1.0) - rack (~> 2.0) - rack-protection (= 2.0.7) + rack (~> 2.2) + rack-protection (= 2.1.0) tilt (~> 2.0) - sinatra-activerecord (2.0.12) - activerecord (>= 3.2) + sinatra-activerecord (2.0.22) + activerecord (>= 4.1) sinatra (>= 1.0) - slop (3.6.0) - sqlite3 (1.3.13) - thread_safe (0.3.6) + sqlite3 (1.4.2) tilt (2.0.10) - tzinfo (1.2.7) - thread_safe (~> 0.1) - zeitwerk (2.3.0) + tzinfo (2.0.4) + concurrent-ruby (~> 1.0) + zeitwerk (2.4.2) PLATFORMS - ruby + x86_64-darwin-20 DEPENDENCIES + activerecord pry + rake require_all sinatra-activerecord sqlite3 BUNDLED WITH - 1.14.6 + 2.2.6 diff --git a/Rakefile b/Rakefile index 508ef20e..6f1eb5df 100644 --- a/Rakefile +++ b/Rakefile @@ -1,6 +1,9 @@ require_relative 'config/environment' require 'sinatra/activerecord/rake' +#DatabaseTasks.db_dir = 'db' +#DatabaseTasks.migrations_paths = ['db/migrate'] + desc 'starts a console' task :console do ActiveRecord::Base.logger = Logger.new(STDOUT) diff --git a/bin/run.rb b/bin/run.rb index cf08c338..c725e713 100644 --- a/bin/run.rb +++ b/bin/run.rb @@ -2,4 +2,7 @@ +binding.pry puts "HELLO WORLD" + + diff --git a/config/environment.rb b/config/environment.rb index 4dbe13e5..e5083671 100644 --- a/config/environment.rb +++ b/config/environment.rb @@ -3,3 +3,6 @@ ActiveRecord::Base.establish_connection(adapter: 'sqlite3', database: 'db/development.db') require_all 'lib' + + + diff --git a/db/migrate/01_create_employees_table.rb b/db/migrate/01_create_employees_table.rb new file mode 100644 index 00000000..3cb861f0 --- /dev/null +++ b/db/migrate/01_create_employees_table.rb @@ -0,0 +1,9 @@ +class CreateEmployeesTable < ActiveRecord::Migration[5.1] + def change + create_table :employees do |t| + t.string :name + t.integer :employer_id, :foreign_key => true + t.integer :project_id, :foreign_key => true + end + end +end diff --git a/db/migrate/02_create_skills_table.rb b/db/migrate/02_create_skills_table.rb new file mode 100644 index 00000000..ae87f73d --- /dev/null +++ b/db/migrate/02_create_skills_table.rb @@ -0,0 +1,7 @@ +class CreateSkillsTable < ActiveRecord::Migration[5.1] + def change + create_table :skills do |t| + t.string :name + end + end +end diff --git a/db/migrate/03_create_projects_table.rb b/db/migrate/03_create_projects_table.rb new file mode 100644 index 00000000..62e6de91 --- /dev/null +++ b/db/migrate/03_create_projects_table.rb @@ -0,0 +1,7 @@ +class CreateProjectsTable < ActiveRecord::Migration[5.1] + def change + create_table :projects do |t| + t.string :name + end + end +end diff --git a/db/migrate/04_create_projectskills_table.rb b/db/migrate/04_create_projectskills_table.rb new file mode 100644 index 00000000..d280383f --- /dev/null +++ b/db/migrate/04_create_projectskills_table.rb @@ -0,0 +1,9 @@ +class CreateProjectskillsTable < ActiveRecord::Migration[5.1] + def change + create_table :projectskills do |t| + t.integer :project_id, :foreign_key => true + t.integer :skill_id, :foreign_key => true + t.integer :competency_requirement + end + end +end diff --git a/db/migrate/05_create_employeeskills_table.rb b/db/migrate/05_create_employeeskills_table.rb new file mode 100644 index 00000000..770f29d3 --- /dev/null +++ b/db/migrate/05_create_employeeskills_table.rb @@ -0,0 +1,9 @@ +class CreateEmployeeskillsTable < ActiveRecord::Migration[5.1] + def change + create_table :employeeskills do |t| + t.integer :employee_id, :foreign_key => true + t.integer :skill_id, :foreign_key => true + t.integer :competency + end + end +end diff --git a/db/migrate/06_create_employers_table.rb b/db/migrate/06_create_employers_table.rb new file mode 100644 index 00000000..8a348459 --- /dev/null +++ b/db/migrate/06_create_employers_table.rb @@ -0,0 +1,7 @@ +class CreateEmployersTable < ActiveRecord::Migration[5.1] + def change + create_table :employers do |t| + t.string :name + end + end +end diff --git a/db/migrate/07_create_employee_projects.rb b/db/migrate/07_create_employee_projects.rb new file mode 100644 index 00000000..f97f9c40 --- /dev/null +++ b/db/migrate/07_create_employee_projects.rb @@ -0,0 +1,9 @@ +class CreateEmployeeProjects < ActiveRecord::Migration[6.1] + def change + create_table :employee_projects do |t| + t.integer :employee_id, :foreign_key => true + t.integer :project_id, :foreign_key => true + t.string :status + end + end +end diff --git a/db/schema.rb b/db/schema.rb new file mode 100644 index 00000000..de0b91be --- /dev/null +++ b/db/schema.rb @@ -0,0 +1,51 @@ +# This file is auto-generated from the current state of the database. Instead +# of editing this file, please use the migrations feature of Active Record to +# incrementally modify your database, and then regenerate this schema definition. +# +# This file is the source Rails uses to define your schema when running `bin/rails +# db:schema:load`. When creating a new database, `bin/rails db:schema:load` tends to +# be faster and is potentially less error prone than running all of your +# migrations from scratch. Old migrations may fail to apply correctly if those +# migrations use external dependencies or application code. +# +# It's strongly recommended that you check this file into your version control system. + +ActiveRecord::Schema.define(version: 7) do + + create_table "employee_projects", force: :cascade do |t| + t.integer "employee_id" + t.integer "project_id" + t.string "status" + end + + create_table "employees", force: :cascade do |t| + t.string "name" + t.integer "employer_id" + t.integer "project_id" + end + + create_table "employeeskills", force: :cascade do |t| + t.integer "employee_id" + t.integer "skill_id" + t.integer "competency" + end + + create_table "employers", force: :cascade do |t| + t.string "name" + end + + create_table "projects", force: :cascade do |t| + t.string "name" + end + + create_table "projectskills", force: :cascade do |t| + t.integer "project_id" + t.integer "skill_id" + t.integer "competency_requirement" + end + + create_table "skills", force: :cascade do |t| + t.string "name" + end + +end diff --git a/db/seeds.rb b/db/seeds.rb new file mode 100644 index 00000000..e69de29b diff --git a/lib/Employee.rb b/lib/Employee.rb new file mode 100644 index 00000000..cc310cf2 --- /dev/null +++ b/lib/Employee.rb @@ -0,0 +1,72 @@ +class Employee < ActiveRecord::Base + + belongs_to :employer + belongs_to :project + has_many :skills + + + + + + + + + + + + + + + + +end + + # #name, id, project_id + # attr_accessor :id, :name, :employeer, :project_id + # @@all = [] + + # def initalize(id = nil, name, employeer)#, project_id = nil) + # @id=id + # @name = name + # @employeer = employeer + # #@project_id = project_id + # @@all << self + # end + + + # def self.all + # @@all + # end + + #basic save method to add new record into database using sql. Note requires .update method + # def save + # if self.id + # self.update + # else + # sql = <<-SQL + # INSERT INTO employee (name, project_id, employeer_id) + # VALUES (?, ?, ?) + # SQL + + # DB[:conn].execute(sql, self.name, self.project_id,employeer_id) + # @id = DB[:conn].execute("SELECT last_insert_rowid() FROM songs")[0][0] + # end + # end + + # #create new instance method + # def self.create(name, employeer, project_id=Nil) + # employee = Employee.new(name, employeer.id) + # employee.save + # employee + # end + + # def self.find_by_id(id) + # sql = "SELECT * FROM employee WHERE id = ?" + # result = DB[:conn].execute(sql, id)[0] + # Employee.new(result[0], result[1], result[2]) + # end + + # def update + # sql = "UPDATE employee SET name = ?, employeer_id = ?, project_id, WHERE id = ?" + # DB[:conn].execute(sql, self.name, self.employeer_id, self.project_id self.id) + # end diff --git a/lib/EmployeeProjects.rb b/lib/EmployeeProjects.rb new file mode 100644 index 00000000..bf23a53b --- /dev/null +++ b/lib/EmployeeProjects.rb @@ -0,0 +1,7 @@ +class EmployeeProjects < ActiveRecord::Base + + + + + +end \ No newline at end of file diff --git a/lib/EmployeeSkills.rb b/lib/EmployeeSkills.rb new file mode 100644 index 00000000..8b1b277c --- /dev/null +++ b/lib/EmployeeSkills.rb @@ -0,0 +1,34 @@ +class EmployeeSkills < ActiveRecord::Base + + belongs_to :skills + belongs_to :employees + + + + + + + + + + + + + + + +end + +# attr_accessor :id, :employee_id, :skill_id +# @@all =[] + +# def initalize(id=nil, employee_id, skill_id) +# @id = id +# @employee_id = employee_id +# @skill_id = skill_id +# @@all << self +# end + +# def self.all +# @@all +# end diff --git a/lib/Employer.rb b/lib/Employer.rb new file mode 100644 index 00000000..9774578c --- /dev/null +++ b/lib/Employer.rb @@ -0,0 +1,24 @@ +class Employer < ActiveRecord::Base + + has_many :employees + + + +end + + + + # attr_accessor :id, :name + + # @@all = [] + + # def initalize (id=nil,name) + # @id=id + # @name = name + # @@all << self + # end + + + # def self.all + # @@all + # end \ No newline at end of file diff --git a/lib/Project.rb b/lib/Project.rb new file mode 100644 index 00000000..d218d033 --- /dev/null +++ b/lib/Project.rb @@ -0,0 +1,32 @@ +class Project < ActiveRecord::Base + + belongs_to :employers + has_many :employees + + + + + + + + + + + + +end + # #name, id + # attr_accessor :id, :project + # @@all = [] + + # def initalize(id=nil,project) + # @id=id + # @project = project + # @@all << self + # end + + + + # def self.all + # @@all + # end \ No newline at end of file diff --git a/lib/ProjectSkills.rb b/lib/ProjectSkills.rb new file mode 100644 index 00000000..5ae4eac3 --- /dev/null +++ b/lib/ProjectSkills.rb @@ -0,0 +1,23 @@ +class ProjectSkills < ActiveRecord::Base + + belongs_to :skills + belongs_to :projects + +end + + + + # attr_accessor :id, :project_id, :skill_id + + # @@all=[] + + # def initalize(id=nil,project_id,skill_id) + # @id=id + # @project_id=project_id + # @skill_id=skill_id + # @@all<