You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

migrate.rb 1008B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. require 'sequel'
  2. require_relative 'connect'
  3. def migrate
  4. db = connect
  5. db.create_table :threads do
  6. primary_key :id
  7. String :title
  8. String :creator, index: true
  9. Integer :remote_id, index: true, unique: true
  10. String :last_post_creator
  11. DateTime :last_post_created_at
  12. DateTime :created_at, index: true
  13. end
  14. db.create_table :posts do
  15. primary_key :id
  16. String :body
  17. String :creator, index: true
  18. Integer :remote_id, index: true, unique: true
  19. foreign_key :thread_id, :threads
  20. DateTime :created_at, index: true
  21. end
  22. db.create_function(:update_last_post, <<-SQL, language: :plpgsql, returns: :trigger)
  23. BEGIN
  24. UPDATE threads
  25. SET
  26. last_post_created_at = NEW.created_at,
  27. last_post_creator = NEW.creator
  28. WHERE
  29. threads.id = NEW.thread_id;
  30. RETURN NEW;
  31. END
  32. SQL
  33. db.run(<<-SQL)
  34. CREATE TRIGGER update_last_post
  35. AFTER INSERT ON posts
  36. FOR EACH ROW
  37. EXECUTE PROCEDURE update_last_post();
  38. SQL
  39. end