Files
browser/plugins/examples/scum-server-plugin/sql/scum-db-v57/users.sql
T

31 lines
1.5 KiB
SQL

SELECT
CAST(profile.id AS TEXT) AS userProfileId,
account.id AS steamId,
CAST(prisoner.id AS TEXT) AS gamePlayerId,
COALESCE(profile.name, account.name, '') AS displayName,
CAST(member.squad_id AS TEXT) AS squadId,
squad.name AS squadName,
profile.fame_points AS famePoints,
MAX(CASE WHEN currency.currency_type = 1 THEN currency.account_balance END) AS normalBalance,
MAX(CASE WHEN currency.currency_type = 2 THEN currency.account_balance END) AS goldBalance,
entity.location_x AS x,
entity.location_y AS y,
entity.location_z AS z,
profile.last_login_time AS lastLoginTime,
strftime('%Y-%m-%dT%H:%M:%SZ', prisoner.last_save_time, 'unixepoch') AS lastSaveTime
FROM user_profile profile
JOIN user account ON account.id = profile.user_id
LEFT JOIN prisoner ON prisoner.id = profile.prisoner_id
LEFT JOIN prisoner_entity ON prisoner_entity.prisoner_id = prisoner.id
LEFT JOIN entity ON entity.id = prisoner_entity.entity_id
LEFT JOIN squad_member member ON member.user_profile_id = profile.id
LEFT JOIN squad ON squad.id = member.squad_id
LEFT JOIN bank_account_registry bank ON bank.account_owner_user_profile_id = profile.id
LEFT JOIN bank_account_registry_currencies currency ON currency.bank_account_id = bank.id
WHERE (:userProfileId IS NULL OR CAST(profile.id AS TEXT) = :userProfileId)
AND (:steamId IS NULL OR account.id = :steamId)
AND (:search IS NULL OR COALESCE(profile.name, account.name, '') LIKE '%' || :search || '%')
GROUP BY profile.id
ORDER BY profile.last_login_time DESC
LIMIT COALESCE(:limit, 500)