# ============================================================
# pid:db/get_pid  （macro 函式，由 pid:player/sync_pid 呼叫）
# macro 參數（來自 pid:temp）：
#   $(player_uuid) → 要查詢的玩家 UUID，格式 [I;a,b,c,d]
# 執行者（@s）：需要同步 PID 的玩家
# 功能：查詢 DB 中是否已有此 UUID 的紀錄，分流至 sync 或 assign
# ============================================================

# 情況 A：DB 中已有此 UUID 的紀錄（舊玩家 / 資料包重載後重新同步）
# players[{uuid:$(player_uuid)}] 是 NBT list 精確元素篩選語法
# return run：執行並立即結束此函式（不繼續執行下方的 assign_new）
# with storage pid:temp 將 player_uuid 傳遞給 sync_existing 函式
$execute if data storage pid:db players[{uuid:$(player_uuid)}] run return run function pid:db/sync_existing with storage pid:temp

# 情況 B：DB 中沒有此 UUID（全新玩家，從未加入過此世界）
# 只有當上方的 execute 條件不成立（UUID 不存在於 DB）時才會執行
function pid:db/assign_new