chore: test deploy snapshot

This commit is contained in:
2026-05-27 16:35:12 +09:00
parent e8a628ac34
commit 10805d242e
7 changed files with 1032 additions and 72 deletions

View File

@@ -310,3 +310,120 @@ export async function resolveChatShareTokenRoomSessionIds(tokenId: string) {
const rooms = await listChatShareTokenRoomMaps(tokenId);
return rooms.map((item) => item.sessionId).filter(Boolean);
}
export async function archiveChatShareTokenRoomMap(tokenId: string, sessionId: string) {
const normalizedTokenId = tokenId.trim();
const normalizedSessionId = sessionId.trim();
if (!normalizedTokenId || !normalizedSessionId) {
return {
archived: false,
archivedRoom: null,
nextDefaultRoom: null,
} as const;
}
await ensureChatShareTokenRoomMapTable();
return db.transaction(async (trx) => {
const current = await trx(`${CHAT_SHARE_TOKEN_ROOM_MAP_TABLE} as room_map`)
.leftJoin(`${CHAT_CONVERSATION_TABLE} as conversation`, 'conversation.session_id', 'room_map.session_id')
.select(
'room_map.shared_resource_token_id',
'room_map.session_id',
'room_map.root_request_id',
'room_map.is_default',
'room_map.sort_order',
'room_map.created_by_client_id',
'room_map.created_at',
'room_map.updated_at',
'conversation.title',
'conversation.request_badge_label',
'conversation.chat_type_id',
'conversation.last_chat_type_id',
'conversation.context_label',
'conversation.context_description',
'conversation.notify_offline',
'conversation.updated_at as conversation_updated_at',
)
.where({
'room_map.shared_resource_token_id': normalizedTokenId,
'room_map.session_id': normalizedSessionId,
})
.whereNull('room_map.archived_at')
.first();
if (!current) {
return {
archived: false,
archivedRoom: null,
nextDefaultRoom: null,
} as const;
}
await trx(CHAT_SHARE_TOKEN_ROOM_MAP_TABLE)
.where({
shared_resource_token_id: normalizedTokenId,
session_id: normalizedSessionId,
})
.whereNull('archived_at')
.update({
archived_at: db.fn.now(),
updated_at: db.fn.now(),
});
let nextDefaultRoom: ChatShareTokenRoomMapItem | null = null;
if (current.is_default) {
const nextDefaultRow = await trx(`${CHAT_SHARE_TOKEN_ROOM_MAP_TABLE} as room_map`)
.leftJoin(`${CHAT_CONVERSATION_TABLE} as conversation`, 'conversation.session_id', 'room_map.session_id')
.select(
'room_map.shared_resource_token_id',
'room_map.session_id',
'room_map.root_request_id',
'room_map.is_default',
'room_map.sort_order',
'room_map.created_by_client_id',
'room_map.created_at',
'room_map.updated_at',
'conversation.title',
'conversation.request_badge_label',
'conversation.chat_type_id',
'conversation.last_chat_type_id',
'conversation.context_label',
'conversation.context_description',
'conversation.notify_offline',
'conversation.updated_at as conversation_updated_at',
)
.where({ 'room_map.shared_resource_token_id': normalizedTokenId })
.whereNull('room_map.archived_at')
.orderBy('room_map.sort_order', 'asc')
.orderBy('room_map.created_at', 'asc')
.first();
if (nextDefaultRow) {
await trx(CHAT_SHARE_TOKEN_ROOM_MAP_TABLE)
.where({
shared_resource_token_id: normalizedTokenId,
session_id: nextDefaultRow.session_id,
})
.whereNull('archived_at')
.update({
is_default: true,
updated_at: db.fn.now(),
});
nextDefaultRoom = mapChatShareTokenRoomRow({
...nextDefaultRow,
is_default: true,
});
}
}
return {
archived: true,
archivedRoom: mapChatShareTokenRoomRow(current),
nextDefaultRoom,
} as const;
});
}