///
Search

연속된 부스트 강화 액티비티 묶기

1.
우선 현재 테이블 구조를 유지하고 쿼리로 묶는다.
SELECT id, user_id AS "userId", type, icon_type AS "iconType", icon_id AS "iconId", route, title, description, amount_money AS "amountMoney", (CASE WHEN sum IS NULL THEN amount_bolt ELSE sum END) AS "amountBolt", created_at AS "createdAt", base_type AS "baseType", base_id AS "baseId", data FROM ( SELECT DISTINCT ON ( type, base_type, base_id, grp) *, sum(amount_bolt) FILTER (WHERE type = 'bolt_used' AND base_type = 'boost') OVER (PARTITION BY type, base_type, base_id, grp) AS sum FROM ( SELECT row_number() OVER (ORDER BY created_at) - row_number() OVER (PARTITION BY type, base_type, base_id ORDER BY created_at) AS grp, * FROM activity WHERE user_id = $1 ) AS t1 ) AS t2 ${formattedLastDate && lastId ? `WHERE created_at < '${formattedLastDate}' AND id < ${lastId}` : ''} ORDER BY created_at DESC ${take ? `LIMIT ${take}` : ''}
JSON
복사
2.
볼트 히스토리도 묶어주는 작업이 필요하기 때문에 추후 테이블 구조를 groupBy가 용이한 형태로 수정한다. (컬럼 추가 등)

2022/05/26 api-server 에 알파 배포한 것이 문제가 생길 경우 롤백 가이드

기존에 있던 함수를 수정한 것이 아니라 새로 함수를 추가해서 controller 단에서만 갈아끼워줬기 때문에 원래 쓰던 함수로 다시 고쳐주면 그만이다.
현재 알파에 배포되어있는 버전
// ActivityController.ts public async activities(ctx: Context & { user: ActiveUser }) { ... const activityService = Container.get(ActivityService); const result = await activityService.getActivityList(input); success(ctx, { activities: result }); }
JSON
복사
롤백 시 아래와 같이 변경
// ActivityController.ts public async activities(ctx: Context & { user: ActiveUser }) { ... const activityService = Container.get(ActivityService); const result = await activityService.getActivities(input); success(ctx, { activities: result }); }
JSON
복사