simple_recommender 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/Rakefile +34 -0
  4. data/lib/simple_recommender.rb +5 -0
  5. data/lib/simple_recommender/recommendable.rb +91 -0
  6. data/lib/simple_recommender/version.rb +3 -0
  7. data/lib/tasks/simple_recommender_tasks.rake +4 -0
  8. data/test/dummy/README.rdoc +28 -0
  9. data/test/dummy/Rakefile +6 -0
  10. data/test/dummy/app/assets/javascripts/application.js +13 -0
  11. data/test/dummy/app/assets/stylesheets/application.css +15 -0
  12. data/test/dummy/app/controllers/application_controller.rb +5 -0
  13. data/test/dummy/app/helpers/application_helper.rb +2 -0
  14. data/test/dummy/app/models/book.rb +10 -0
  15. data/test/dummy/app/models/like.rb +4 -0
  16. data/test/dummy/app/models/tag.rb +2 -0
  17. data/test/dummy/app/models/user.rb +3 -0
  18. data/test/dummy/app/views/layouts/application.html.erb +13 -0
  19. data/test/dummy/bin/bundle +3 -0
  20. data/test/dummy/bin/rails +4 -0
  21. data/test/dummy/bin/rake +4 -0
  22. data/test/dummy/bin/setup +29 -0
  23. data/test/dummy/config.ru +4 -0
  24. data/test/dummy/config/application.rb +32 -0
  25. data/test/dummy/config/boot.rb +5 -0
  26. data/test/dummy/config/database.yml +85 -0
  27. data/test/dummy/config/environment.rb +5 -0
  28. data/test/dummy/config/environments/development.rb +41 -0
  29. data/test/dummy/config/environments/production.rb +79 -0
  30. data/test/dummy/config/environments/test.rb +42 -0
  31. data/test/dummy/config/initializers/assets.rb +11 -0
  32. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  33. data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
  34. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  35. data/test/dummy/config/initializers/inflections.rb +16 -0
  36. data/test/dummy/config/initializers/mime_types.rb +4 -0
  37. data/test/dummy/config/initializers/session_store.rb +3 -0
  38. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  39. data/test/dummy/config/locales/en.yml +23 -0
  40. data/test/dummy/config/routes.rb +56 -0
  41. data/test/dummy/config/secrets.yml +22 -0
  42. data/test/dummy/db/migrate/20170123001813_create_books.rb +9 -0
  43. data/test/dummy/db/migrate/20170123001819_create_users.rb +9 -0
  44. data/test/dummy/db/migrate/20170123001909_create_books_users.rb +11 -0
  45. data/test/dummy/db/migrate/20170123010745_enable_int_array_extension.rb +5 -0
  46. data/test/dummy/db/migrate/20170125030342_create_tags.rb +9 -0
  47. data/test/dummy/db/migrate/20170125030446_create_likes.rb +10 -0
  48. data/test/dummy/db/migrate/20170125032813_add_author_to_books.rb +5 -0
  49. data/test/dummy/db/migrate/20170125034331_create_books_tags.rb +8 -0
  50. data/test/dummy/db/migrate/20170125034341_remove_books_users.rb +5 -0
  51. data/test/dummy/db/schema.rb +63 -0
  52. data/test/dummy/log/development.log +511 -0
  53. data/test/dummy/log/test.log +5624 -0
  54. data/test/dummy/public/404.html +67 -0
  55. data/test/dummy/public/422.html +67 -0
  56. data/test/dummy/public/500.html +66 -0
  57. data/test/dummy/public/favicon.ico +0 -0
  58. data/test/dummy/test/models/book_test.rb +77 -0
  59. data/test/dummy/test/models/like_test.rb +7 -0
  60. data/test/dummy/test/models/tag_test.rb +7 -0
  61. data/test/dummy/test/models/user_test.rb +7 -0
  62. data/test/fixtures/books.yml +29 -0
  63. data/test/fixtures/likes.yml +57 -0
  64. data/test/fixtures/tags.yml +19 -0
  65. data/test/fixtures/users.yml +19 -0
  66. data/test/simple_recommender_test.rb +7 -0
  67. data/test/test_helper.rb +20 -0
  68. metadata +199 -0
@@ -0,0 +1,63 @@
1
+ # encoding: UTF-8
2
+ # This file is auto-generated from the current state of the database. Instead
3
+ # of editing this file, please use the migrations feature of Active Record to
4
+ # incrementally modify your database, and then regenerate this schema definition.
5
+ #
6
+ # Note that this schema.rb definition is the authoritative source for your
7
+ # database schema. If you need to create the application database on another
8
+ # system, you should be using db:schema:load, not running all the migrations
9
+ # from scratch. The latter is a flawed and unsustainable approach (the more migrations
10
+ # you'll amass, the slower it'll run and the greater likelihood for issues).
11
+ #
12
+ # It's strongly recommended that you check this file into your version control system.
13
+
14
+ ActiveRecord::Schema.define(version: 20170125034341) do
15
+
16
+ # These are extensions that must be enabled in order to support this database
17
+ enable_extension "plpgsql"
18
+ enable_extension "intarray"
19
+
20
+ create_table "books", force: :cascade do |t|
21
+ t.string "name"
22
+ t.datetime "created_at", null: false
23
+ t.datetime "updated_at", null: false
24
+ t.integer "author_id"
25
+ end
26
+
27
+ add_index "books", ["author_id"], name: "index_books_on_author_id", using: :btree
28
+
29
+ create_table "books_tags", force: :cascade do |t|
30
+ t.integer "book_id"
31
+ t.integer "tag_id"
32
+ end
33
+
34
+ add_index "books_tags", ["book_id"], name: "index_books_tags_on_book_id", using: :btree
35
+ add_index "books_tags", ["tag_id"], name: "index_books_tags_on_tag_id", using: :btree
36
+
37
+ create_table "likes", force: :cascade do |t|
38
+ t.integer "user_id"
39
+ t.integer "book_id"
40
+ t.datetime "created_at", null: false
41
+ t.datetime "updated_at", null: false
42
+ end
43
+
44
+ add_index "likes", ["book_id"], name: "index_likes_on_book_id", using: :btree
45
+ add_index "likes", ["user_id"], name: "index_likes_on_user_id", using: :btree
46
+
47
+ create_table "tags", force: :cascade do |t|
48
+ t.string "name"
49
+ t.datetime "created_at", null: false
50
+ t.datetime "updated_at", null: false
51
+ end
52
+
53
+ create_table "users", force: :cascade do |t|
54
+ t.string "name"
55
+ t.datetime "created_at", null: false
56
+ t.datetime "updated_at", null: false
57
+ end
58
+
59
+ add_foreign_key "books_tags", "books"
60
+ add_foreign_key "books_tags", "tags"
61
+ add_foreign_key "likes", "books"
62
+ add_foreign_key "likes", "users"
63
+ end
@@ -0,0 +1,511 @@
1
+  (56.4ms) CREATE TABLE "schema_migrations" ("version" character varying NOT NULL) 
2
+  (2.9ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
3
+ ActiveRecord::SchemaMigration Load (2.2ms) SELECT "schema_migrations".* FROM "schema_migrations"
4
+ SQL (17.3ms) CREATE EXTENSION IF NOT EXISTS "plpgsql"
5
+  (0.3ms) SELECT version FROM "schema_migrations"
6
+  (1.7ms) INSERT INTO "schema_migrations" (version) VALUES ('0')
7
+ SQL (1.3ms) CREATE EXTENSION IF NOT EXISTS "plpgsql"
8
+  (16.2ms) CREATE TABLE "schema_migrations" ("version" character varying NOT NULL) 
9
+  (2.0ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
10
+  (0.6ms) SELECT version FROM "schema_migrations"
11
+  (0.4ms) INSERT INTO "schema_migrations" (version) VALUES ('0')
12
+ ActiveRecord::SchemaMigration Load (0.3ms) SELECT "schema_migrations".* FROM "schema_migrations"
13
+ ActiveRecord::SchemaMigration Load (24.9ms) SELECT "schema_migrations".* FROM "schema_migrations"
14
+ Book Load (18.4ms) SELECT "books".* FROM "books" ORDER BY "books"."id" ASC LIMIT 1
15
+ SQL (2.1ms) CREATE EXTENSION IF NOT EXISTS "plpgsql"
16
+  (8.1ms) SELECT version FROM "schema_migrations"
17
+ SQL (2.2ms) CREATE EXTENSION IF NOT EXISTS "plpgsql"
18
+  (2.1ms) SELECT version FROM "schema_migrations"
19
+ ActiveRecord::SchemaMigration Load (0.4ms) SELECT "schema_migrations".* FROM "schema_migrations"
20
+ ActiveRecord::SchemaMigration Load (0.3ms) SELECT "schema_migrations".* FROM "schema_migrations"
21
+ Migrating to CreateBooks (20170123001813)
22
+  (0.2ms) BEGIN
23
+  (56.9ms) CREATE TABLE "books" ("id" serial primary key, "name" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
24
+ SQL (23.7ms) INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20170123001813"]]
25
+  (0.9ms) COMMIT
26
+ Migrating to CreateUsers (20170123001819)
27
+  (5.9ms) BEGIN
28
+  (22.5ms) CREATE TABLE "users" ("id" serial primary key, "name" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
29
+ SQL (0.2ms) INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20170123001819"]]
30
+  (0.4ms) COMMIT
31
+ Migrating to CreateBooksUsers (20170123001909)
32
+  (7.2ms) BEGIN
33
+  (1.3ms) ROLLBACK
34
+ ActiveRecord::SchemaMigration Load (19.8ms) SELECT "schema_migrations".* FROM "schema_migrations"
35
+ Migrating to CreateBooksUsers (20170123001909)
36
+  (0.2ms) BEGIN
37
+  (39.7ms) CREATE TABLE "books_users" ("id" serial primary key, "book_id" integer, "user_id" integer) 
38
+ SQL (4.6ms) INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20170123001909"]]
39
+  (6.2ms) COMMIT
40
+ ActiveRecord::SchemaMigration Load (0.2ms) SELECT "schema_migrations".* FROM "schema_migrations"
41
+  (15.5ms) SELECT t2.oid::regclass::text AS to_table, a1.attname AS column, a2.attname AS primary_key, c.conname AS name, c.confupdtype AS on_update, c.confdeltype AS on_delete
42
+ FROM pg_constraint c
43
+ JOIN pg_class t1 ON c.conrelid = t1.oid
44
+ JOIN pg_class t2 ON c.confrelid = t2.oid
45
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
46
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
47
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
48
+ WHERE c.contype = 'f'
49
+ AND t1.relname = 'books'
50
+ AND t3.nspname = ANY (current_schemas(false))
51
+ ORDER BY c.conname
52
+ 
53
+  (3.3ms) SELECT t2.oid::regclass::text AS to_table, a1.attname AS column, a2.attname AS primary_key, c.conname AS name, c.confupdtype AS on_update, c.confdeltype AS on_delete
54
+ FROM pg_constraint c
55
+ JOIN pg_class t1 ON c.conrelid = t1.oid
56
+ JOIN pg_class t2 ON c.confrelid = t2.oid
57
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
58
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
59
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
60
+ WHERE c.contype = 'f'
61
+ AND t1.relname = 'books_users'
62
+ AND t3.nspname = ANY (current_schemas(false))
63
+ ORDER BY c.conname
64
+
65
+  (3.2ms) SELECT t2.oid::regclass::text AS to_table, a1.attname AS column, a2.attname AS primary_key, c.conname AS name, c.confupdtype AS on_update, c.confdeltype AS on_delete
66
+ FROM pg_constraint c
67
+ JOIN pg_class t1 ON c.conrelid = t1.oid
68
+ JOIN pg_class t2 ON c.confrelid = t2.oid
69
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
70
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
71
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
72
+ WHERE c.contype = 'f'
73
+ AND t1.relname = 'users'
74
+ AND t3.nspname = ANY (current_schemas(false))
75
+ ORDER BY c.conname
76
+ 
77
+ ActiveRecord::SchemaMigration Load (7.8ms) SELECT "schema_migrations".* FROM "schema_migrations"
78
+ ActiveRecord::SchemaMigration Load (0.2ms) SELECT "schema_migrations".* FROM "schema_migrations"
79
+ Migrating to CreateBooksUsers (20170123001909)
80
+  (0.2ms) BEGIN
81
+  (33.7ms) DROP TABLE "books_users"
82
+ SQL (12.5ms) DELETE FROM "schema_migrations" WHERE "schema_migrations"."version" = $1 [["version", "20170123001909"]]
83
+  (6.7ms) COMMIT
84
+ ActiveRecord::SchemaMigration Load (0.2ms) SELECT "schema_migrations".* FROM "schema_migrations"
85
+  (2.8ms) SELECT t2.oid::regclass::text AS to_table, a1.attname AS column, a2.attname AS primary_key, c.conname AS name, c.confupdtype AS on_update, c.confdeltype AS on_delete
86
+ FROM pg_constraint c
87
+ JOIN pg_class t1 ON c.conrelid = t1.oid
88
+ JOIN pg_class t2 ON c.confrelid = t2.oid
89
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
90
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
91
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
92
+ WHERE c.contype = 'f'
93
+ AND t1.relname = 'books'
94
+ AND t3.nspname = ANY (current_schemas(false))
95
+ ORDER BY c.conname
96
+
97
+  (2.8ms) SELECT t2.oid::regclass::text AS to_table, a1.attname AS column, a2.attname AS primary_key, c.conname AS name, c.confupdtype AS on_update, c.confdeltype AS on_delete
98
+ FROM pg_constraint c
99
+ JOIN pg_class t1 ON c.conrelid = t1.oid
100
+ JOIN pg_class t2 ON c.confrelid = t2.oid
101
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
102
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
103
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
104
+ WHERE c.contype = 'f'
105
+ AND t1.relname = 'users'
106
+ AND t3.nspname = ANY (current_schemas(false))
107
+ ORDER BY c.conname
108
+ 
109
+ ActiveRecord::SchemaMigration Load (0.3ms) SELECT "schema_migrations".* FROM "schema_migrations"
110
+ Migrating to CreateBooksUsers (20170123001909)
111
+  (0.2ms) BEGIN
112
+  (12.7ms) CREATE TABLE "books_users" ("id" serial primary key, "book_id" integer, "user_id" integer) 
113
+  (1.0ms) CREATE UNIQUE INDEX "index_books_users_on_book_id_and_user_id" ON "books_users" ("book_id", "user_id")
114
+  (1.1ms) CREATE INDEX "index_books_users_on_user_id" ON "books_users" ("user_id")
115
+ SQL (0.3ms) INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20170123001909"]]
116
+  (11.7ms) COMMIT
117
+ ActiveRecord::SchemaMigration Load (0.2ms) SELECT "schema_migrations".* FROM "schema_migrations"
118
+  (2.8ms) SELECT t2.oid::regclass::text AS to_table, a1.attname AS column, a2.attname AS primary_key, c.conname AS name, c.confupdtype AS on_update, c.confdeltype AS on_delete
119
+ FROM pg_constraint c
120
+ JOIN pg_class t1 ON c.conrelid = t1.oid
121
+ JOIN pg_class t2 ON c.confrelid = t2.oid
122
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
123
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
124
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
125
+ WHERE c.contype = 'f'
126
+ AND t1.relname = 'books'
127
+ AND t3.nspname = ANY (current_schemas(false))
128
+ ORDER BY c.conname
129
+ 
130
+  (3.4ms) SELECT t2.oid::regclass::text AS to_table, a1.attname AS column, a2.attname AS primary_key, c.conname AS name, c.confupdtype AS on_update, c.confdeltype AS on_delete
131
+ FROM pg_constraint c
132
+ JOIN pg_class t1 ON c.conrelid = t1.oid
133
+ JOIN pg_class t2 ON c.confrelid = t2.oid
134
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
135
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
136
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
137
+ WHERE c.contype = 'f'
138
+ AND t1.relname = 'books_users'
139
+ AND t3.nspname = ANY (current_schemas(false))
140
+ ORDER BY c.conname
141
+
142
+  (5.7ms) SELECT t2.oid::regclass::text AS to_table, a1.attname AS column, a2.attname AS primary_key, c.conname AS name, c.confupdtype AS on_update, c.confdeltype AS on_delete
143
+ FROM pg_constraint c
144
+ JOIN pg_class t1 ON c.conrelid = t1.oid
145
+ JOIN pg_class t2 ON c.confrelid = t2.oid
146
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
147
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
148
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
149
+ WHERE c.contype = 'f'
150
+ AND t1.relname = 'users'
151
+ AND t3.nspname = ANY (current_schemas(false))
152
+ ORDER BY c.conname
153
+ 
154
+ Book Load (1.9ms) SELECT "books".* FROM "books" ORDER BY "books"."id" ASC LIMIT 1
155
+  (1.0ms) SELECT COUNT(*) FROM "books"
156
+ ActiveRecord::SchemaMigration Load (34.2ms) SELECT "schema_migrations".* FROM "schema_migrations"
157
+ Migrating to EnableIntArrayExtension (20170123010745)
158
+  (0.1ms) BEGIN
159
+ SQL (1120.1ms) CREATE EXTENSION IF NOT EXISTS "intarray"
160
+ SQL (14.0ms) INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20170123010745"]]
161
+  (22.1ms) COMMIT
162
+ ActiveRecord::SchemaMigration Load (0.2ms) SELECT "schema_migrations".* FROM "schema_migrations"
163
+  (8.1ms) SELECT t2.oid::regclass::text AS to_table, a1.attname AS column, a2.attname AS primary_key, c.conname AS name, c.confupdtype AS on_update, c.confdeltype AS on_delete
164
+ FROM pg_constraint c
165
+ JOIN pg_class t1 ON c.conrelid = t1.oid
166
+ JOIN pg_class t2 ON c.confrelid = t2.oid
167
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
168
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
169
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
170
+ WHERE c.contype = 'f'
171
+ AND t1.relname = 'books'
172
+ AND t3.nspname = ANY (current_schemas(false))
173
+ ORDER BY c.conname
174
+ 
175
+  (1.7ms) SELECT t2.oid::regclass::text AS to_table, a1.attname AS column, a2.attname AS primary_key, c.conname AS name, c.confupdtype AS on_update, c.confdeltype AS on_delete
176
+ FROM pg_constraint c
177
+ JOIN pg_class t1 ON c.conrelid = t1.oid
178
+ JOIN pg_class t2 ON c.confrelid = t2.oid
179
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
180
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
181
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
182
+ WHERE c.contype = 'f'
183
+ AND t1.relname = 'books_users'
184
+ AND t3.nspname = ANY (current_schemas(false))
185
+ ORDER BY c.conname
186
+
187
+  (1.8ms) SELECT t2.oid::regclass::text AS to_table, a1.attname AS column, a2.attname AS primary_key, c.conname AS name, c.confupdtype AS on_update, c.confdeltype AS on_delete
188
+ FROM pg_constraint c
189
+ JOIN pg_class t1 ON c.conrelid = t1.oid
190
+ JOIN pg_class t2 ON c.confrelid = t2.oid
191
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
192
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
193
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
194
+ WHERE c.contype = 'f'
195
+ AND t1.relname = 'users'
196
+ AND t3.nspname = ANY (current_schemas(false))
197
+ ORDER BY c.conname
198
+ 
199
+ ActiveRecord::SchemaMigration Load (51.6ms) SELECT "schema_migrations".* FROM "schema_migrations"
200
+ Migrating to CreateTags (20170125030342)
201
+  (6.3ms) BEGIN
202
+  (244.7ms) CREATE TABLE "tags" ("id" serial primary key, "name" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
203
+ SQL (23.5ms) INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20170125030342"]]
204
+  (4.8ms) COMMIT
205
+ Migrating to CreateLikes (20170125030446)
206
+  (6.1ms) BEGIN
207
+  (25.0ms) CREATE TABLE "likes" ("id" serial primary key, "user_id" integer, "book_id" integer, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) 
208
+  (3.2ms) CREATE INDEX "index_likes_on_user_id" ON "likes" ("user_id")
209
+  (4.9ms) CREATE INDEX "index_likes_on_book_id" ON "likes" ("book_id")
210
+  (60.4ms) ALTER TABLE "likes" ADD CONSTRAINT "fk_rails_1e09b5dabf"
211
+ FOREIGN KEY ("user_id")
212
+ REFERENCES "users" ("id")
213
+
214
+  (0.9ms) ALTER TABLE "likes" ADD CONSTRAINT "fk_rails_15895dfb71"
215
+ FOREIGN KEY ("book_id")
216
+ REFERENCES "books" ("id")
217
+ 
218
+ SQL (0.2ms) INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20170125030446"]]
219
+  (11.8ms) COMMIT
220
+ ActiveRecord::SchemaMigration Load (0.2ms) SELECT "schema_migrations".* FROM "schema_migrations"
221
+  (4.2ms) SELECT t2.oid::regclass::text AS to_table, a1.attname AS column, a2.attname AS primary_key, c.conname AS name, c.confupdtype AS on_update, c.confdeltype AS on_delete
222
+ FROM pg_constraint c
223
+ JOIN pg_class t1 ON c.conrelid = t1.oid
224
+ JOIN pg_class t2 ON c.confrelid = t2.oid
225
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
226
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
227
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
228
+ WHERE c.contype = 'f'
229
+ AND t1.relname = 'books'
230
+ AND t3.nspname = ANY (current_schemas(false))
231
+ ORDER BY c.conname
232
+ 
233
+  (2.3ms) SELECT t2.oid::regclass::text AS to_table, a1.attname AS column, a2.attname AS primary_key, c.conname AS name, c.confupdtype AS on_update, c.confdeltype AS on_delete
234
+ FROM pg_constraint c
235
+ JOIN pg_class t1 ON c.conrelid = t1.oid
236
+ JOIN pg_class t2 ON c.confrelid = t2.oid
237
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
238
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
239
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
240
+ WHERE c.contype = 'f'
241
+ AND t1.relname = 'books_users'
242
+ AND t3.nspname = ANY (current_schemas(false))
243
+ ORDER BY c.conname
244
+
245
+  (3.4ms) SELECT t2.oid::regclass::text AS to_table, a1.attname AS column, a2.attname AS primary_key, c.conname AS name, c.confupdtype AS on_update, c.confdeltype AS on_delete
246
+ FROM pg_constraint c
247
+ JOIN pg_class t1 ON c.conrelid = t1.oid
248
+ JOIN pg_class t2 ON c.confrelid = t2.oid
249
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
250
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
251
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
252
+ WHERE c.contype = 'f'
253
+ AND t1.relname = 'likes'
254
+ AND t3.nspname = ANY (current_schemas(false))
255
+ ORDER BY c.conname
256
+ 
257
+  (4.6ms) SELECT t2.oid::regclass::text AS to_table, a1.attname AS column, a2.attname AS primary_key, c.conname AS name, c.confupdtype AS on_update, c.confdeltype AS on_delete
258
+ FROM pg_constraint c
259
+ JOIN pg_class t1 ON c.conrelid = t1.oid
260
+ JOIN pg_class t2 ON c.confrelid = t2.oid
261
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
262
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
263
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
264
+ WHERE c.contype = 'f'
265
+ AND t1.relname = 'tags'
266
+ AND t3.nspname = ANY (current_schemas(false))
267
+ ORDER BY c.conname
268
+
269
+  (2.5ms) SELECT t2.oid::regclass::text AS to_table, a1.attname AS column, a2.attname AS primary_key, c.conname AS name, c.confupdtype AS on_update, c.confdeltype AS on_delete
270
+ FROM pg_constraint c
271
+ JOIN pg_class t1 ON c.conrelid = t1.oid
272
+ JOIN pg_class t2 ON c.confrelid = t2.oid
273
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
274
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
275
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
276
+ WHERE c.contype = 'f'
277
+ AND t1.relname = 'users'
278
+ AND t3.nspname = ANY (current_schemas(false))
279
+ ORDER BY c.conname
280
+ 
281
+ Book Load (1.2ms) SELECT "books".* FROM "books" ORDER BY "books"."id" ASC LIMIT 1
282
+ ActiveRecord::SchemaMigration Load (27.8ms) SELECT "schema_migrations".* FROM "schema_migrations"
283
+ Migrating to AddAuthorToBooks (20170125032813)
284
+  (0.2ms) BEGIN
285
+  (27.8ms) ALTER TABLE "books" ADD "author_id" integer
286
+  (8.1ms) CREATE INDEX "index_books_on_author_id" ON "books" ("author_id")
287
+  (2.3ms) ALTER TABLE "books" ADD CONSTRAINT "fk_rails_53d51ce16a"
288
+ FOREIGN KEY ("author_id")
289
+ REFERENCES "authors" ("id")
290
+ 
291
+  (0.1ms) ROLLBACK
292
+ ActiveRecord::SchemaMigration Load (15.3ms) SELECT "schema_migrations".* FROM "schema_migrations"
293
+ Migrating to AddAuthorToBooks (20170125032813)
294
+  (0.2ms) BEGIN
295
+  (25.9ms) ALTER TABLE "books" ADD "author_id" integer
296
+  (8.1ms) CREATE INDEX "index_books_on_author_id" ON "books" ("author_id")
297
+ SQL (14.5ms) INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20170125032813"]]
298
+  (6.4ms) COMMIT
299
+ ActiveRecord::SchemaMigration Load (0.2ms) SELECT "schema_migrations".* FROM "schema_migrations"
300
+  (6.4ms) SELECT t2.oid::regclass::text AS to_table, a1.attname AS column, a2.attname AS primary_key, c.conname AS name, c.confupdtype AS on_update, c.confdeltype AS on_delete
301
+ FROM pg_constraint c
302
+ JOIN pg_class t1 ON c.conrelid = t1.oid
303
+ JOIN pg_class t2 ON c.confrelid = t2.oid
304
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
305
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
306
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
307
+ WHERE c.contype = 'f'
308
+ AND t1.relname = 'books'
309
+ AND t3.nspname = ANY (current_schemas(false))
310
+ ORDER BY c.conname
311
+
312
+  (2.9ms) SELECT t2.oid::regclass::text AS to_table, a1.attname AS column, a2.attname AS primary_key, c.conname AS name, c.confupdtype AS on_update, c.confdeltype AS on_delete
313
+ FROM pg_constraint c
314
+ JOIN pg_class t1 ON c.conrelid = t1.oid
315
+ JOIN pg_class t2 ON c.confrelid = t2.oid
316
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
317
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
318
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
319
+ WHERE c.contype = 'f'
320
+ AND t1.relname = 'books_users'
321
+ AND t3.nspname = ANY (current_schemas(false))
322
+ ORDER BY c.conname
323
+ 
324
+  (2.4ms) SELECT t2.oid::regclass::text AS to_table, a1.attname AS column, a2.attname AS primary_key, c.conname AS name, c.confupdtype AS on_update, c.confdeltype AS on_delete
325
+ FROM pg_constraint c
326
+ JOIN pg_class t1 ON c.conrelid = t1.oid
327
+ JOIN pg_class t2 ON c.confrelid = t2.oid
328
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
329
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
330
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
331
+ WHERE c.contype = 'f'
332
+ AND t1.relname = 'likes'
333
+ AND t3.nspname = ANY (current_schemas(false))
334
+ ORDER BY c.conname
335
+
336
+  (3.1ms) SELECT t2.oid::regclass::text AS to_table, a1.attname AS column, a2.attname AS primary_key, c.conname AS name, c.confupdtype AS on_update, c.confdeltype AS on_delete
337
+ FROM pg_constraint c
338
+ JOIN pg_class t1 ON c.conrelid = t1.oid
339
+ JOIN pg_class t2 ON c.confrelid = t2.oid
340
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
341
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
342
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
343
+ WHERE c.contype = 'f'
344
+ AND t1.relname = 'tags'
345
+ AND t3.nspname = ANY (current_schemas(false))
346
+ ORDER BY c.conname
347
+ 
348
+  (1.7ms) SELECT t2.oid::regclass::text AS to_table, a1.attname AS column, a2.attname AS primary_key, c.conname AS name, c.confupdtype AS on_update, c.confdeltype AS on_delete
349
+ FROM pg_constraint c
350
+ JOIN pg_class t1 ON c.conrelid = t1.oid
351
+ JOIN pg_class t2 ON c.confrelid = t2.oid
352
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
353
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
354
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
355
+ WHERE c.contype = 'f'
356
+ AND t1.relname = 'users'
357
+ AND t3.nspname = ANY (current_schemas(false))
358
+ ORDER BY c.conname
359
+
360
+  (0.2ms) BEGIN
361
+ SQL (23.6ms) INSERT INTO "books" ("name", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id" [["name", "hi"], ["created_at", "2017-01-25 03:28:44.002322"], ["updated_at", "2017-01-25 03:28:44.002322"]]
362
+  (0.8ms) COMMIT
363
+  (0.1ms) BEGIN
364
+ SQL (4.6ms) INSERT INTO "users" ("name", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id" [["name", "yo"], ["created_at", "2017-01-25 03:28:57.330937"], ["updated_at", "2017-01-25 03:28:57.330937"]]
365
+  (0.3ms) COMMIT
366
+  (0.2ms) BEGIN
367
+ SQL (24.1ms) UPDATE "books" SET "author_id" = $1, "updated_at" = $2 WHERE "books"."id" = $3 [["author_id", 1], ["updated_at", "2017-01-25 03:29:09.456378"], ["id", 1]]
368
+  (0.4ms) COMMIT
369
+ Book Load (0.2ms) SELECT "books".* FROM "books" WHERE "books"."id" = $1 LIMIT 1 [["id", 1]]
370
+ User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT 1 [["id", 1]]
371
+ Book Load (2.7ms) SELECT "books".* FROM "books" WHERE "books"."id" = $1 LIMIT 1 [["id", 1]]
372
+ User Load (7.7ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT 1 [["id", 1]]
373
+ ActiveRecord::SchemaMigration Load (27.4ms) SELECT "schema_migrations".* FROM "schema_migrations"
374
+ Migrating to CreateBooksTags (20170125034331)
375
+  (0.2ms) BEGIN
376
+  (52.7ms) CREATE TABLE "books_tags" ("id" serial primary key, "book_id" integer, "tag_id" integer) 
377
+  (1.3ms) CREATE INDEX "index_books_tags_on_book_id" ON "books_tags" ("book_id")
378
+  (0.7ms) CREATE INDEX "index_books_tags_on_tag_id" ON "books_tags" ("tag_id")
379
+  (6.4ms) ALTER TABLE "books_tags" ADD CONSTRAINT "fk_rails_a8df0c97a8"
380
+ FOREIGN KEY ("book_id")
381
+ REFERENCES "books" ("id")
382
+
383
+  (1.6ms) ALTER TABLE "books_tags" ADD CONSTRAINT "fk_rails_988fcbe806"
384
+ FOREIGN KEY ("tag_id")
385
+ REFERENCES "tags" ("id")
386
+ 
387
+ SQL (8.2ms) INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20170125034331"]]
388
+  (11.7ms) COMMIT
389
+ Migrating to RemoveBooksUsers (20170125034341)
390
+  (4.9ms) BEGIN
391
+  (6.8ms) DROP TABLE "books_users"
392
+ SQL (0.2ms) INSERT INTO "schema_migrations" ("version") VALUES ($1) [["version", "20170125034341"]]
393
+  (6.2ms) COMMIT
394
+ ActiveRecord::SchemaMigration Load (0.2ms) SELECT "schema_migrations".* FROM "schema_migrations"
395
+  (8.3ms) SELECT t2.oid::regclass::text AS to_table, a1.attname AS column, a2.attname AS primary_key, c.conname AS name, c.confupdtype AS on_update, c.confdeltype AS on_delete
396
+ FROM pg_constraint c
397
+ JOIN pg_class t1 ON c.conrelid = t1.oid
398
+ JOIN pg_class t2 ON c.confrelid = t2.oid
399
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
400
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
401
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
402
+ WHERE c.contype = 'f'
403
+ AND t1.relname = 'books'
404
+ AND t3.nspname = ANY (current_schemas(false))
405
+ ORDER BY c.conname
406
+ 
407
+  (1.9ms) SELECT t2.oid::regclass::text AS to_table, a1.attname AS column, a2.attname AS primary_key, c.conname AS name, c.confupdtype AS on_update, c.confdeltype AS on_delete
408
+ FROM pg_constraint c
409
+ JOIN pg_class t1 ON c.conrelid = t1.oid
410
+ JOIN pg_class t2 ON c.confrelid = t2.oid
411
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
412
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
413
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
414
+ WHERE c.contype = 'f'
415
+ AND t1.relname = 'books_tags'
416
+ AND t3.nspname = ANY (current_schemas(false))
417
+ ORDER BY c.conname
418
+
419
+  (1.7ms) SELECT t2.oid::regclass::text AS to_table, a1.attname AS column, a2.attname AS primary_key, c.conname AS name, c.confupdtype AS on_update, c.confdeltype AS on_delete
420
+ FROM pg_constraint c
421
+ JOIN pg_class t1 ON c.conrelid = t1.oid
422
+ JOIN pg_class t2 ON c.confrelid = t2.oid
423
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
424
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
425
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
426
+ WHERE c.contype = 'f'
427
+ AND t1.relname = 'likes'
428
+ AND t3.nspname = ANY (current_schemas(false))
429
+ ORDER BY c.conname
430
+ 
431
+  (1.5ms) SELECT t2.oid::regclass::text AS to_table, a1.attname AS column, a2.attname AS primary_key, c.conname AS name, c.confupdtype AS on_update, c.confdeltype AS on_delete
432
+ FROM pg_constraint c
433
+ JOIN pg_class t1 ON c.conrelid = t1.oid
434
+ JOIN pg_class t2 ON c.confrelid = t2.oid
435
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
436
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
437
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
438
+ WHERE c.contype = 'f'
439
+ AND t1.relname = 'tags'
440
+ AND t3.nspname = ANY (current_schemas(false))
441
+ ORDER BY c.conname
442
+
443
+  (1.5ms) SELECT t2.oid::regclass::text AS to_table, a1.attname AS column, a2.attname AS primary_key, c.conname AS name, c.confupdtype AS on_update, c.confdeltype AS on_delete
444
+ FROM pg_constraint c
445
+ JOIN pg_class t1 ON c.conrelid = t1.oid
446
+ JOIN pg_class t2 ON c.confrelid = t2.oid
447
+ JOIN pg_attribute a1 ON a1.attnum = c.conkey[1] AND a1.attrelid = t1.oid
448
+ JOIN pg_attribute a2 ON a2.attnum = c.confkey[1] AND a2.attrelid = t2.oid
449
+ JOIN pg_namespace t3 ON c.connamespace = t3.oid
450
+ WHERE c.contype = 'f'
451
+ AND t1.relname = 'users'
452
+ AND t3.nspname = ANY (current_schemas(false))
453
+ ORDER BY c.conname
454
+ 
455
+ Book Load (31.9ms) SELECT "books".* FROM "books" ORDER BY "books"."id" ASC LIMIT 1
456
+ Book Load (27.3ms) SELECT "books".* FROM "books" ORDER BY "books"."id" ASC LIMIT 1
457
+ Book Load (0.7ms) SELECT "books".* FROM "books" ORDER BY "books"."id" ASC LIMIT 1
458
+ User Load (21.7ms) SELECT "users".* FROM "users" INNER JOIN "likes" ON "users"."id" = "likes"."user_id" WHERE "likes"."book_id" = $1 [["book_id", 1]]
459
+ Book Load (0.8ms) SELECT "books".* FROM "books" ORDER BY "books"."id" ASC LIMIT 1
460
+ Like Load (0.1ms) SELECT "likes".* FROM "likes" WHERE "likes"."book_id" = $1 [["book_id", 1]]
461
+ Book Load (0.7ms) SELECT "books".* FROM "books" ORDER BY "books"."id" ASC LIMIT 1 OFFSET 1
462
+  (0.2ms) BEGIN
463
+ SQL (17.8ms) INSERT INTO "books" ("name", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id" [["name", "second"], ["created_at", "2017-01-26 02:41:43.094744"], ["updated_at", "2017-01-26 02:41:43.094744"]]
464
+  (6.3ms) COMMIT
465
+  (0.1ms) BEGIN
466
+ SQL (0.3ms) INSERT INTO "books" ("name", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id" [["name", "third"], ["created_at", "2017-01-26 02:41:49.422892"], ["updated_at", "2017-01-26 02:41:49.422892"]]
467
+  (2.0ms) COMMIT
468
+ Book Load (0.6ms) SELECT "books".* FROM "books" ORDER BY "books"."id" ASC LIMIT 1
469
+ Like Load (0.2ms) SELECT "likes".* FROM "likes" WHERE "likes"."book_id" = $1 [["book_id", 1]]
470
+ Book Load (0.7ms) SELECT "books".* FROM "books" ORDER BY "books"."id" ASC LIMIT 1
471
+ User Load (2.1ms) SELECT "users".* FROM "users" ORDER BY "users"."id" ASC LIMIT 1
472
+  (0.1ms) BEGIN
473
+ SQL (27.7ms) INSERT INTO "likes" ("book_id", "user_id", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id" [["book_id", 1], ["user_id", 1], ["created_at", "2017-01-26 02:42:00.848509"], ["updated_at", "2017-01-26 02:42:00.848509"]]
474
+  (0.7ms) COMMIT
475
+ User Load (0.3ms) SELECT "users".* FROM "users" INNER JOIN "likes" ON "users"."id" = "likes"."user_id" WHERE "likes"."book_id" = $1 [["book_id", 1]]
476
+  (0.2ms) BEGIN
477
+ SQL (1.8ms) INSERT INTO "users" ("name", "created_at", "updated_at") VALUES ($1, $2, $3) RETURNING "id" [["name", "second"], ["created_at", "2017-01-26 02:42:06.119572"], ["updated_at", "2017-01-26 02:42:06.119572"]]
478
+  (2.8ms) COMMIT
479
+ Book Load (0.7ms) SELECT "books".* FROM "books" ORDER BY "books"."id" ASC LIMIT 1
480
+  (0.2ms) BEGIN
481
+ SQL (0.4ms) INSERT INTO "likes" ("book_id", "user_id", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id" [["book_id", 1], ["user_id", 2], ["created_at", "2017-01-26 02:42:17.860271"], ["updated_at", "2017-01-26 02:42:17.860271"]]
482
+  (3.4ms) COMMIT
483
+ User Load (0.2ms) SELECT "users".* FROM "users" INNER JOIN "likes" ON "users"."id" = "likes"."user_id" WHERE "likes"."book_id" = $1 [["book_id", 1]]
484
+ Book Load (0.5ms) SELECT "books".* FROM "books" ORDER BY "books"."id" ASC LIMIT 1 OFFSET 1
485
+ User Load (0.3ms) SELECT "users".* FROM "users" ORDER BY "users"."id" ASC LIMIT 1
486
+  (0.2ms) BEGIN
487
+ SQL (0.4ms) INSERT INTO "likes" ("book_id", "user_id", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id" [["book_id", 2], ["user_id", 1], ["created_at", "2017-01-26 02:42:21.008328"], ["updated_at", "2017-01-26 02:42:21.008328"]]
488
+  (2.8ms) COMMIT
489
+ User Load (0.3ms) SELECT "users".* FROM "users" INNER JOIN "likes" ON "users"."id" = "likes"."user_id" WHERE "likes"."book_id" = $1 [["book_id", 2]]
490
+ Book Load (0.7ms) SELECT "books".* FROM "books" ORDER BY "books"."id" ASC LIMIT 1 OFFSET 2
491
+  (0.2ms) BEGIN
492
+ SQL (0.3ms) INSERT INTO "likes" ("book_id", "user_id", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id" [["book_id", 3], ["user_id", 2], ["created_at", "2017-01-26 02:42:24.946072"], ["updated_at", "2017-01-26 02:42:24.946072"]]
493
+  (1.4ms) COMMIT
494
+ User Load (0.2ms) SELECT "users".* FROM "users" INNER JOIN "likes" ON "users"."id" = "likes"."user_id" WHERE "likes"."book_id" = $1 [["book_id", 3]]
495
+ Book Load (0.8ms) SELECT "books".* FROM "books" ORDER BY "books"."id" ASC LIMIT 1
496
+ Book Load (41.0ms)  WITH similar_items AS (
497
+ SELECT
498
+ t2.book_id,
499
+ (# (array_agg(DISTINCT t1.user_id) & array_agg(DISTINCT t2.user_id)))::float/
500
+ (# (array_agg(DISTINCT t1.user_id) | array_agg(DISTINCT t2.user_id)))::float as similarity
501
+ FROM likes AS t1, likes AS t2
502
+ WHERE t1.book_id = 1 and t2.book_id != 1
503
+ GROUP BY t2.book_id
504
+ ORDER BY similarity DESC
505
+ LIMIT 10
506
+ )
507
+ SELECT books.*, similarity
508
+ FROM similar_items
509
+ JOIN books ON books.id = similar_items.book_id
510
+ ORDER BY similarity DESC;
511
+