Class: BadgePostsViewManager
- Inherits:
-
Object
- Object
- BadgePostsViewManager
- Defined in:
- lib/badge_posts_view_manager.rb
Constant Summary collapse
- VIEW_NAME =
"badge_posts"
Class Method Summary collapse
Class Method Details
.badge_posts_view_exists? ⇒ Boolean
30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/badge_posts_view_manager.rb', line 30 def self.badge_posts_view_exists? sql = <<~SQL SELECT 1 FROM pg_catalog.pg_views WHERE schemaname IN ('public') AND viewname = '#{VIEW_NAME}'; SQL DB.exec(sql) == 1 end |
.create! ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/badge_posts_view_manager.rb', line 6 def self.create! sql = <<~SQL CREATE VIEW #{VIEW_NAME} AS SELECT p.* FROM posts p JOIN topics t ON t.id = p.topic_id JOIN categories c ON c.id = t.category_id WHERE c.allow_badges AND p.deleted_at IS NULL AND t.deleted_at IS NULL AND NOT c.read_restricted AND t.visible AND p.post_type IN (1,2,3) SQL DB.exec(sql) raise "Failed to create '#{VIEW_NAME}' view" unless badge_posts_view_exists? end |