Skip to content

Instantly share code, notes, and snippets.

@raghuvarmabh
Last active October 17, 2018 18:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save raghuvarmabh/cf290d312f3689c580908a8903e8faa3 to your computer and use it in GitHub Desktop.
Save raghuvarmabh/cf290d312f3689c580908a8903e8faa3 to your computer and use it in GitHub Desktop.
joel coding challenge
From 98e66e960491f10d543686211b30c3c6a8d61192 Mon Sep 17 00:00:00 2001
From: ydarbleoj <brady.joel@gmail.com>
Date: Tue, 16 Oct 2018 15:11:17 -0700
Subject: [PATCH 1/4] Added event model and migration
---
app/models/event.rb | 3 +++
db/migrate/20181016215050_create_events.rb | 11 +++++++++++
db/schema.rb | 10 +++++++++-
test/fixtures/events.yml | 13 +++++++++++++
test/models/event_test.rb | 7 +++++++
5 files changed, 43 insertions(+), 1 deletion(-)
create mode 100644 app/models/event.rb
create mode 100644 db/migrate/20181016215050_create_events.rb
create mode 100644 test/fixtures/events.yml
create mode 100644 test/models/event_test.rb
diff --git a/app/models/event.rb b/app/models/event.rb
new file mode 100644
index 0000000..74c4352
--- /dev/null
+++ b/app/models/event.rb
@@ -0,0 +1,3 @@
+class Event < ApplicationRecord
+
+end
diff --git a/db/migrate/20181016215050_create_events.rb b/db/migrate/20181016215050_create_events.rb
new file mode 100644
index 0000000..2eae1ca
--- /dev/null
+++ b/db/migrate/20181016215050_create_events.rb
@@ -0,0 +1,11 @@
+class CreateEvents < ActiveRecord::Migration[5.2]
+ def change
+ create_table :events do |t|
+ t.integer :event_id
+ t.datetime :event_date
+ t.integer :event_type
+
+ t.timestamps
+ end
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 59dacd4..b331d30 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
-ActiveRecord::Schema.define(version: 2018_10_02_224410) do
+ActiveRecord::Schema.define(version: 2018_10_16_215050) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
@@ -25,6 +25,14 @@ ActiveRecord::Schema.define(version: 2018_10_02_224410) do
t.index ["company_type", "company_id"], name: "index_customers_on_company_type_and_company_id"
end
+ create_table "events", force: :cascade do |t|
+ t.integer "event_id"
+ t.datetime "event_date"
+ t.integer "event_type"
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
+ end
+
create_table "providers", force: :cascade do |t|
t.string "name"
t.datetime "created_at", null: false
diff --git a/test/fixtures/events.yml b/test/fixtures/events.yml
new file mode 100644
index 0000000..c89f5c6
--- /dev/null
+++ b/test/fixtures/events.yml
@@ -0,0 +1,13 @@
+# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
+
+one:
+ event_date: 2018-10-16 14:50:50
+ event_type: status
+
+two:
+ event_date: 2018-10-16 14:50:50
+ event_type: pickup
+
+three:
+ event_date: 2018-10-16 14:50:50
+ event_type: exception
diff --git a/test/models/event_test.rb b/test/models/event_test.rb
new file mode 100644
index 0000000..c6f1566
--- /dev/null
+++ b/test/models/event_test.rb
@@ -0,0 +1,7 @@
+require 'test_helper'
+
+class EventTest < ActiveSupport::TestCase
+ # test "the truth" do
+ # assert true
+ # end
+end
--
2.17.0
From 62f55aecb68e24ea92e2c254626bd3cd65e260d4 Mon Sep 17 00:00:00 2001
From: ydarbleoj <brady.joel@gmail.com>
Date: Tue, 16 Oct 2018 15:32:23 -0700
Subject: [PATCH 2/4] Added join table and updated attr
---
app/models/company_event.rb | 2 ++
app/models/customer.rb | 1 +
app/models/customer_event.rb | 2 ++
app/models/shipper.rb | 1 +
db/migrate/20181016215050_create_events.rb | 1 -
.../20181016222600_create_company_events.rb | 10 ++++++++++
.../20181016222655_create_customer_events.rb | 9 +++++++++
db/schema.rb | 17 +++++++++++++++--
test/fixtures/company_events.yml | 11 +++++++++++
test/fixtures/customer_events.yml | 11 +++++++++++
test/models/company_event_test.rb | 7 +++++++
test/models/customer_event_test.rb | 7 +++++++
vue-spa/src/App.vue | 3 ++-
vue-spa/src/components/EventsList.vue | 17 +++++++++++++++++
14 files changed, 95 insertions(+), 4 deletions(-)
create mode 100644 app/models/company_event.rb
create mode 100644 app/models/customer_event.rb
create mode 100644 db/migrate/20181016222600_create_company_events.rb
create mode 100644 db/migrate/20181016222655_create_customer_events.rb
create mode 100644 test/fixtures/company_events.yml
create mode 100644 test/fixtures/customer_events.yml
create mode 100644 test/models/company_event_test.rb
create mode 100644 test/models/customer_event_test.rb
create mode 100644 vue-spa/src/components/EventsList.vue
diff --git a/app/models/company_event.rb b/app/models/company_event.rb
new file mode 100644
index 0000000..969f8b4
--- /dev/null
+++ b/app/models/company_event.rb
@@ -0,0 +1,2 @@
+class CompanyEvent < ApplicationRecord
+end
diff --git a/app/models/customer.rb b/app/models/customer.rb
index f361510..da9e8bd 100644
--- a/app/models/customer.rb
+++ b/app/models/customer.rb
@@ -1,3 +1,4 @@
class Customer < ApplicationRecord
belongs_to :company, polymorphic: true
+ has_many :events, as: :eventable
end
diff --git a/app/models/customer_event.rb b/app/models/customer_event.rb
new file mode 100644
index 0000000..d1ddec6
--- /dev/null
+++ b/app/models/customer_event.rb
@@ -0,0 +1,2 @@
+class CustomerEvent < ApplicationRecord
+end
diff --git a/app/models/shipper.rb b/app/models/shipper.rb
index b2bb5df..a81dd21 100644
--- a/app/models/shipper.rb
+++ b/app/models/shipper.rb
@@ -1,3 +1,4 @@
class Shipper < ApplicationRecord
has_many :customers, as: :company
+ has_many :events, as: :eventable
end
diff --git a/db/migrate/20181016215050_create_events.rb b/db/migrate/20181016215050_create_events.rb
index 2eae1ca..84b364d 100644
--- a/db/migrate/20181016215050_create_events.rb
+++ b/db/migrate/20181016215050_create_events.rb
@@ -1,7 +1,6 @@
class CreateEvents < ActiveRecord::Migration[5.2]
def change
create_table :events do |t|
- t.integer :event_id
t.datetime :event_date
t.integer :event_type
diff --git a/db/migrate/20181016222600_create_company_events.rb b/db/migrate/20181016222600_create_company_events.rb
new file mode 100644
index 0000000..aad39df
--- /dev/null
+++ b/db/migrate/20181016222600_create_company_events.rb
@@ -0,0 +1,10 @@
+class CreateCompanyEvents < ActiveRecord::Migration[5.2]
+ def change
+ create_table :company_events do |t|
+ t.integer :company
+ t.integer :events
+
+ t.timestamps
+ end
+ end
+end
diff --git a/db/migrate/20181016222655_create_customer_events.rb b/db/migrate/20181016222655_create_customer_events.rb
new file mode 100644
index 0000000..1b16cfa
--- /dev/null
+++ b/db/migrate/20181016222655_create_customer_events.rb
@@ -0,0 +1,9 @@
+class CreateCustomerEvents < ActiveRecord::Migration[5.2]
+ def change
+ create_table :customer_events do |t|
+ t.integer :customer_id
+ t.integer :events
+ t.timestamps
+ end
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index b331d30..ea563ac 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -10,11 +10,25 @@
#
# It's strongly recommended that you check this file into your version control system.
-ActiveRecord::Schema.define(version: 2018_10_16_215050) do
+ActiveRecord::Schema.define(version: 2018_10_16_222655) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
+ create_table "company_events", force: :cascade do |t|
+ t.integer "company"
+ t.integer "events"
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
+ end
+
+ create_table "customer_events", force: :cascade do |t|
+ t.integer "customer_id"
+ t.integer "events"
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
+ end
+
create_table "customers", force: :cascade do |t|
t.string "company_type", null: false
t.bigint "company_id", null: false
@@ -26,7 +40,6 @@ ActiveRecord::Schema.define(version: 2018_10_16_215050) do
end
create_table "events", force: :cascade do |t|
- t.integer "event_id"
t.datetime "event_date"
t.integer "event_type"
t.datetime "created_at", null: false
diff --git a/test/fixtures/company_events.yml b/test/fixtures/company_events.yml
new file mode 100644
index 0000000..80aed36
--- /dev/null
+++ b/test/fixtures/company_events.yml
@@ -0,0 +1,11 @@
+# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
+
+# This model initially had no columns defined. If you add columns to the
+# model remove the '{}' from the fixture names and add the columns immediately
+# below each fixture, per the syntax in the comments below
+#
+one: {}
+# column: value
+#
+two: {}
+# column: value
diff --git a/test/fixtures/customer_events.yml b/test/fixtures/customer_events.yml
new file mode 100644
index 0000000..80aed36
--- /dev/null
+++ b/test/fixtures/customer_events.yml
@@ -0,0 +1,11 @@
+# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
+
+# This model initially had no columns defined. If you add columns to the
+# model remove the '{}' from the fixture names and add the columns immediately
+# below each fixture, per the syntax in the comments below
+#
+one: {}
+# column: value
+#
+two: {}
+# column: value
diff --git a/test/models/company_event_test.rb b/test/models/company_event_test.rb
new file mode 100644
index 0000000..bdd0861
--- /dev/null
+++ b/test/models/company_event_test.rb
@@ -0,0 +1,7 @@
+require 'test_helper'
+
+class CompanyEventTest < ActiveSupport::TestCase
+ # test "the truth" do
+ # assert true
+ # end
+end
diff --git a/test/models/customer_event_test.rb b/test/models/customer_event_test.rb
new file mode 100644
index 0000000..4f45fc3
--- /dev/null
+++ b/test/models/customer_event_test.rb
@@ -0,0 +1,7 @@
+require 'test_helper'
+
+class CustomerEventTest < ActiveSupport::TestCase
+ # test "the truth" do
+ # assert true
+ # end
+end
diff --git a/vue-spa/src/App.vue b/vue-spa/src/App.vue
index 37c5e6e..5a6a7c6 100644
--- a/vue-spa/src/App.vue
+++ b/vue-spa/src/App.vue
@@ -27,7 +27,8 @@ const http = axios.create({
export default {
name: 'app',
components: {
- 'CustomerList': CustomerList
+ 'CustomerList': CustomerList,
+ 'EventsList': EventsList
},
data () {
return {
diff --git a/vue-spa/src/components/EventsList.vue b/vue-spa/src/components/EventsList.vue
new file mode 100644
index 0000000..4bfb1a7
--- /dev/null
+++ b/vue-spa/src/components/EventsList.vue
@@ -0,0 +1,17 @@
+<template>
+ <div>
+ </div>
+</template>
+
+<script>
+import moment from 'moment'
+
+export default {
+ name: 'EventList',
+ props: {
+ collection: {
+ required: true
+ }
+ },
+}
+</script>
--
2.17.0
From 17da2a492d9f5d5bddccebe6eede2b81b03c71a6 Mon Sep 17 00:00:00 2001
From: ydarbleoj <brady.joel@gmail.com>
Date: Tue, 16 Oct 2018 15:43:00 -0700
Subject: [PATCH 3/4] Updated migrations
---
vue-spa/src/components/EventsList.vue | 4 ----
1 file changed, 4 deletions(-)
diff --git a/vue-spa/src/components/EventsList.vue b/vue-spa/src/components/EventsList.vue
index 4bfb1a7..1f668e7 100644
--- a/vue-spa/src/components/EventsList.vue
+++ b/vue-spa/src/components/EventsList.vue
@@ -8,10 +8,6 @@ import moment from 'moment'
export default {
name: 'EventList',
- props: {
- collection: {
- required: true
- }
},
}
</script>
--
2.17.0
From 0993142c8bf36167780bff0c164bfa30203e7f95 Mon Sep 17 00:00:00 2001
From: ydarbleoj <brady.joel@gmail.com>
Date: Tue, 16 Oct 2018 15:44:59 -0700
Subject: [PATCH 4/4] Udpated migrations
---
app/models/customer.rb | 3 ++-
app/models/customer_event.rb | 2 ++
app/models/event.rb | 5 ++++-
app/models/provider.rb | 2 ++
app/models/shipper.rb | 3 ++-
db/migrate/20181016222600_create_company_events.rb | 4 ++--
db/migrate/20181016222655_create_customer_events.rb | 2 +-
db/schema.rb | 6 +++---
8 files changed, 18 insertions(+), 9 deletions(-)
diff --git a/app/models/customer.rb b/app/models/customer.rb
index da9e8bd..aadac45 100644
--- a/app/models/customer.rb
+++ b/app/models/customer.rb
@@ -1,4 +1,5 @@
class Customer < ApplicationRecord
belongs_to :company, polymorphic: true
- has_many :events, as: :eventable
+ has_many :customer_events
+ has_many :events, through: :customer_events
end
diff --git a/app/models/customer_event.rb b/app/models/customer_event.rb
index d1ddec6..f0b98d0 100644
--- a/app/models/customer_event.rb
+++ b/app/models/customer_event.rb
@@ -1,2 +1,4 @@
class CustomerEvent < ApplicationRecord
+ belongs_to :customer
+ belongs_to :event
end
diff --git a/app/models/event.rb b/app/models/event.rb
index 74c4352..aebec33 100644
--- a/app/models/event.rb
+++ b/app/models/event.rb
@@ -1,3 +1,6 @@
class Event < ApplicationRecord
-
+ has_many :customer_events
+ has_many :customers, through: :customer_events
+ has_many :company_events
+ has_many :company, through: :company_events
end
diff --git a/app/models/provider.rb b/app/models/provider.rb
index c468731..4364a15 100644
--- a/app/models/provider.rb
+++ b/app/models/provider.rb
@@ -1,3 +1,5 @@
class Provider < ApplicationRecord
has_many :customers, as: :company
+ has_many :company_events
+ has_many :events, through: :company_events
end
diff --git a/app/models/shipper.rb b/app/models/shipper.rb
index a81dd21..ac4aee6 100644
--- a/app/models/shipper.rb
+++ b/app/models/shipper.rb
@@ -1,4 +1,5 @@
class Shipper < ApplicationRecord
has_many :customers, as: :company
- has_many :events, as: :eventable
+ has_many :company_events
+ has_many :events, through: :company_events
end
diff --git a/db/migrate/20181016222600_create_company_events.rb b/db/migrate/20181016222600_create_company_events.rb
index aad39df..fb6daac 100644
--- a/db/migrate/20181016222600_create_company_events.rb
+++ b/db/migrate/20181016222600_create_company_events.rb
@@ -1,8 +1,8 @@
class CreateCompanyEvents < ActiveRecord::Migration[5.2]
def change
create_table :company_events do |t|
- t.integer :company
- t.integer :events
+ t.integer :company_id
+ t.integer :event_id
t.timestamps
end
diff --git a/db/migrate/20181016222655_create_customer_events.rb b/db/migrate/20181016222655_create_customer_events.rb
index 1b16cfa..bea49be 100644
--- a/db/migrate/20181016222655_create_customer_events.rb
+++ b/db/migrate/20181016222655_create_customer_events.rb
@@ -2,7 +2,7 @@ class CreateCustomerEvents < ActiveRecord::Migration[5.2]
def change
create_table :customer_events do |t|
t.integer :customer_id
- t.integer :events
+ t.integer :event_id
t.timestamps
end
end
diff --git a/db/schema.rb b/db/schema.rb
index ea563ac..2073488 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -16,15 +16,15 @@ ActiveRecord::Schema.define(version: 2018_10_16_222655) do
enable_extension "plpgsql"
create_table "company_events", force: :cascade do |t|
- t.integer "company"
- t.integer "events"
+ t.integer "company_id"
+ t.integer "event_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
create_table "customer_events", force: :cascade do |t|
t.integer "customer_id"
- t.integer "events"
+ t.integer "event_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
--
2.17.0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment