29 lines
1.9 KiB
JSON
29 lines
1.9 KiB
JSON
{
|
|
"key": "scum-players-read-v1",
|
|
"adapterVersion": "scum-live-data-v1",
|
|
"queryVersion": "scum-sqlite-query-v1",
|
|
"capability": "players.read",
|
|
"requiredSchemaFingerprint": "sha256:ebd477d6c6ead9c34c41169af489236d762a76186d45dedd753d50f1b81e26f0",
|
|
"statementType": "single-select-or-cte",
|
|
"statement": "WITH player_rows AS (SELECT u.id AS externalPlayerId, u.id_type AS idType, u.provider AS provider, u.creation_time AS userCreationTime, u.last_login_time AS userLastLoginTime, u.is_banned AS isBanned, up.id AS profileId, up.name AS displayName, up.type AS profileType, p.id AS prisonerId, pe.entity_id AS entityId FROM \"user\" u LEFT JOIN user_profile up ON up.user_id = u.id AND up.type = 1 LEFT JOIN prisoner p ON p.id = up.prisoner_id AND p.user_profile_id = up.id LEFT JOIN prisoner_entity pe ON pe.prisoner_id = p.id ORDER BY u.last_login_time DESC, u.id ASC LIMIT :limit OFFSET :offset) SELECT externalPlayerId, idType, provider, userCreationTime, userLastLoginTime, isBanned, profileId, displayName, profileType, prisonerId, entityId FROM player_rows",
|
|
"parameters": [
|
|
{ "name": "limit", "binding": ":limit", "type": "integer", "required": true, "minimum": 1, "maximum": 100 },
|
|
{ "name": "offset", "binding": ":offset", "type": "integer", "required": true, "minimum": 0, "maximum": 1000000 }
|
|
],
|
|
"safety": {
|
|
"queryOnly": true,
|
|
"readOnlyConnection": true,
|
|
"forbidMultipleStatements": true,
|
|
"forbidAttach": true,
|
|
"forbidWritePragmas": true,
|
|
"forbidExtensionLoading": true,
|
|
"maxRows": 100,
|
|
"timeoutMs": 2000,
|
|
"maxResultBytes": 65536
|
|
},
|
|
"evidence": {
|
|
"source": "openspec/changes/replace-scum-projections-with-real-data-management/evidence/scum-current-service-sqlite-diagnostic-2026-08-12.md",
|
|
"provenJoins": ["user_profile.user_id -> user.id", "user_profile.prisoner_id -> prisoner.id", "prisoner.user_profile_id -> user_profile.id", "prisoner_entity.prisoner_id -> prisoner.id"]
|
|
}
|
|
}
|