- 회원 탈퇴 시 즉시 삭제 대신 `active: false` 및 `deactivatedAt`을 기록하여 30일간 데이터를 유예하는 소프트 삭제 방식을 도입했습니다. - 경기 취소 시 투표를 삭제하는 대신 `cancelled: true`로 마킹하여 참여 흔적을 보존하고, 통계 집계에서만 제외하도록 로직을 변경했습니다. - 유예 기간이 지난 비활성 계정을 영구적으로 파기하는 `accountPurge` 스케줄러를 추가했습니다.
120 lines
3.2 KiB
JSON
120 lines
3.2 KiB
JSON
{
|
|
// Example (Standard Edition):
|
|
//
|
|
// "indexes": [
|
|
// {
|
|
// "collectionGroup": "widgets",
|
|
// "queryScope": "COLLECTION",
|
|
// "fields": [
|
|
// { "fieldPath": "foo", "arrayConfig": "CONTAINS" },
|
|
// { "fieldPath": "bar", "mode": "DESCENDING" }
|
|
// ]
|
|
// },
|
|
//
|
|
// "fieldOverrides": [
|
|
// {
|
|
// "collectionGroup": "widgets",
|
|
// "fieldPath": "baz",
|
|
// "indexes": [
|
|
// { "order": "ASCENDING", "queryScope": "COLLECTION" }
|
|
// ]
|
|
// },
|
|
// ]
|
|
// ]
|
|
//
|
|
// Example (Enterprise Edition):
|
|
//
|
|
// "indexes": [
|
|
// {
|
|
// "collectionGroup": "reviews",
|
|
// "queryScope": "COLLECTION_GROUP",
|
|
// "apiScope": "MONGODB_COMPATIBLE_API",
|
|
// "density": "DENSE",
|
|
// "multikey": false,
|
|
// "fields": [
|
|
// { "fieldPath": "baz", "mode": "ASCENDING" }
|
|
// ]
|
|
// },
|
|
// {
|
|
// "collectionGroup": "items",
|
|
// "queryScope": "COLLECTION_GROUP",
|
|
// "apiScope": "MONGODB_COMPATIBLE_API",
|
|
// "density": "SPARSE_ANY",
|
|
// "multikey": true,
|
|
// "fields": [
|
|
// { "fieldPath": "baz", "mode": "ASCENDING" }
|
|
// ]
|
|
// },
|
|
// ]
|
|
"indexes": [
|
|
{
|
|
"collectionGroup": "users",
|
|
"queryScope": "COLLECTION",
|
|
"fields": [
|
|
{ "fieldPath": "favoriteTeamCode", "order": "ASCENDING" },
|
|
{ "fieldPath": "tierPoints", "order": "DESCENDING" }
|
|
]
|
|
},
|
|
{
|
|
"collectionGroup": "users",
|
|
"queryScope": "COLLECTION",
|
|
"fields": [
|
|
{ "fieldPath": "active", "order": "ASCENDING" },
|
|
{ "fieldPath": "tierPoints", "order": "DESCENDING" }
|
|
]
|
|
},
|
|
{
|
|
"collectionGroup": "users",
|
|
"queryScope": "COLLECTION",
|
|
"fields": [
|
|
{ "fieldPath": "active", "order": "ASCENDING" },
|
|
{ "fieldPath": "tierPoints", "order": "ASCENDING" }
|
|
]
|
|
},
|
|
{
|
|
"collectionGroup": "users",
|
|
"queryScope": "COLLECTION",
|
|
"fields": [
|
|
{ "fieldPath": "favoriteTeamCode", "order": "ASCENDING" },
|
|
{ "fieldPath": "active", "order": "ASCENDING" },
|
|
{ "fieldPath": "tierPoints", "order": "DESCENDING" }
|
|
]
|
|
},
|
|
{
|
|
"collectionGroup": "users",
|
|
"queryScope": "COLLECTION",
|
|
"fields": [
|
|
{ "fieldPath": "favoriteTeamCode", "order": "ASCENDING" },
|
|
{ "fieldPath": "active", "order": "ASCENDING" },
|
|
{ "fieldPath": "tierPoints", "order": "ASCENDING" }
|
|
]
|
|
},
|
|
{
|
|
"collectionGroup": "users",
|
|
"queryScope": "COLLECTION",
|
|
"fields": [
|
|
{ "fieldPath": "active", "order": "ASCENDING" },
|
|
{ "fieldPath": "deactivatedAt", "order": "ASCENDING" }
|
|
]
|
|
},
|
|
{
|
|
"collectionGroup": "users",
|
|
"queryScope": "COLLECTION",
|
|
"fields": [
|
|
{ "fieldPath": "favoriteTeamCode", "order": "ASCENDING" },
|
|
{ "fieldPath": "tierPoints", "order": "ASCENDING" },
|
|
{ "fieldPath": "__name__", "order": "ASCENDING" }
|
|
]
|
|
},
|
|
{
|
|
"collectionGroup": "pointLedger",
|
|
"queryScope": "COLLECTION",
|
|
"fields": [
|
|
{ "fieldPath": "createdAt", "order": "DESCENDING" },
|
|
{ "fieldPath": "seq", "order": "DESCENDING" },
|
|
{ "fieldPath": "__name__", "order": "DESCENDING" }
|
|
]
|
|
}
|
|
],
|
|
"fieldOverrides": []
|
|
} |