sankichi92/LiveLog

users テーブルから members テーブルを分離する

Closed this issue · 5 comments

insert into members
(
    id
    , user_id
    , joined_year
    , first_name
    , last_name
    , furigana
    , nickname
    , url
    , bio
    , created_at
    , updated_at
)
select
    id
    , case
      when activated = true then id
      else null
      end as user_id
    , joined as joined_year
    , first_name
    , last_name
    , furigana
    , nickname
    , url
    , intro as bio
    , created_at
    , now()
from
    users
;
insert into members
(
    id
    , user_id
    , joined_year
    , name
    , url
    , bio
    , created_at
    , updated_at
)
select
    id
    , case
      when activated = true then id
      else null
      end as user_id
    , joined as joined_year
    , case
      when (nickname is null or nickname = '') then last_name
      else nickname
      end as name
    , url
    , intro as bio
    , created_at
    , now()
from
    users
on conflict (id)
do update set
    user_id = excluded.user_id
    , first_name = excluded.first_name
    , last_name = excluded.last_name
    , furigana = excluded.furigana
    , nickname = excluded.nickname
    , url = excluded.url
    , bio = excluded.bio
    , updated_at = now()
;
update
    active_storage_attachments
set
    record_type = 'Member'
where
    record_type = 'User'
    and name = 'avatar'
;
delete from users where activated = false;

続きは #641 で。