class SocializationCassandraMigrations MIGRATIONS = [ # likes "CREATE TABLE likes ( actor_type varchar, actor_id bigint, victim_id bigint, victim_type varchar, created_at bigint, PRIMARY KEY ((actor_type, actor_id), created_at) );", "CREATE INDEX ON likes (victim_type)", "CREATE INDEX ON likes (victim_id)", "CREATE TABLE likers ( actor_type varchar, actor_id bigint, victim_id bigint, victim_type varchar, created_at bigint, PRIMARY KEY ((victim_type, victim_id), created_at) );", "CREATE INDEX ON likers (actor_type)", "CREATE INDEX ON likers (actor_id)", "CREATE TABLE liker_counter ( victim_id bigint, victim_type varchar, cnt counter, PRIMARY KEY (victim_type, victim_id) );", # follow "CREATE TABLE followings ( actor_type varchar, actor_id bigint, victim_id bigint, victim_type varchar, created_at bigint, PRIMARY KEY ((actor_type, actor_id), created_at) );", "CREATE INDEX ON followings (victim_type)", "CREATE INDEX ON followings (victim_id)", "CREATE TABLE followers ( actor_type varchar, actor_id bigint, victim_id bigint, victim_type varchar, created_at bigint, PRIMARY KEY ((victim_type, victim_id), created_at) );", "CREATE INDEX ON followers (actor_type)", "CREATE INDEX ON followers (actor_id)", "CREATE TABLE following_counter ( actor_id bigint, actor_type varchar, cnt counter, PRIMARY KEY (actor_type, actor_id) );", "CREATE TABLE follower_counter ( victim_id bigint, victim_type varchar, cnt counter, PRIMARY KEY (victim_type, victim_id) );", # Comments "CREATE TABLE comments ( actor_type varchar, actor_id bigint, victim_id bigint, victim_type varchar, created_at bigint, txt text, PRIMARY KEY ((victim_type, victim_id), created_at) );", "CREATE TABLE comment_counter ( victim_id bigint, victim_type varchar, cnt counter, PRIMARY KEY (victim_type, victim_id) );", # Share "CREATE TABLE shares ( actor_type varchar, actor_id bigint, victim_id bigint, victim_type varchar, networks set, created_at bigint, txt text, PRIMARY KEY ((victim_type, victim_id), created_at) );", "CREATE TABLE share_counter ( victim_id bigint, victim_type varchar, cnt counter, PRIMARY KEY (victim_type, victim_id) );" ] end namespace :socialization do desc "Socialization Cassandra Migrations" task(:migrate => :environment) do begin session = Socialization.cassandra.connect('system') session.execute("CREATE KEYSPACE #{Socialization.keyspace} WITH replication = {'class': 'NetworkTopologyStrategy'}") rescue Cassandra::Errors::AlreadyExistsError => e next end session = Socialization.cassandra.connect(Socialization.keyspace) SocializationCassandraMigrations::MIGRATIONS.each do |m| begin Socialization.cassandra_session.execute(m) rescue Cassandra::Errors::AlreadyExistsError => e next end end end end