12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- require 'sequel'
-
- def migrate
- db = Sequel.connect(adapter: :postgres, database: 'vlv2')
-
- db.create_table :threads do
- primary_key :id
- String :title
- String :creator, index: true
- Integer :remote_id, index: true, unique: true
- String :last_post_creator
- DateTime :last_post_created_at
- DateTime :created_at, index: true
- end
-
- db.create_table :posts do
- primary_key :id
- String :body
- String :creator, index: true
- Integer :remote_id, index: true, unique: true
- foreign_key :thread_id, :threads
- DateTime :created_at, index: true
- end
-
- db.create_function(:update_last_post, <<-SQL, language: :plpgsql, returns: :trigger)
- BEGIN
- UPDATE threads
- SET
- last_post_created_at = NEW.created_at,
- last_post_creator = NEW.creator
- WHERE
- threads.id = NEW.thread_id;
- RETURN NEW;
- END
- SQL
-
- db.run(<<-SQL)
- CREATE TRIGGER update_last_post
- AFTER INSERT ON posts
- FOR EACH ROW
- EXECUTE PROCEDURE update_last_post();
- SQL
- end
|