simple_recommender 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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
+