#!/bin/bash
set -euo pipefail
[[ $# -eq 1 && "${1-}" == '--preflight' ]] || exit 78
cdx_ld=''
cdx_svc=''
[[ "$(readlink -f /proc/53772/exe)" == /www/server/php/74/bin/php ]]
while IFS= read -r -d '' cdx_entry; do
    case "$cdx_entry" in
        LD_LIBRARY_PATH=*) cdx_ld="${cdx_entry#LD_LIBRARY_PATH=}" ;;
        DM_SVC_PATH=*) cdx_svc="${cdx_entry#DM_SVC_PATH=}" ;;
    esac
done < /proc/53772/environ
[[ -n "$cdx_ld" && -n "$cdx_svc" ]]
exec /usr/bin/env -i PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \
    "LD_LIBRARY_PATH=$cdx_ld" "DM_SVC_PATH=$cdx_svc" \
    /www/server/php/74/bin/php -c /www/server/php/74/etc/php-cli.ini \
    -d extension=/home/dmdba/dmdbms/drivers/php_pdo/libphp74_dm.so \
    -d extension=/home/dmdba/dmdbms/drivers/php_pdo/php74_pdo_dm.so -r '
set_exception_handler(static function (Throwable $e): void {
    fwrite(STDERR, "ARTICLE_PREFLIGHT_FAILED " . get_class($e) . "\n");
    exit(3);
});
$e=[];
foreach(explode("\0",(string)file_get_contents("/proc/53772/environ")) as $x){
    $p=explode("=",$x,2); if(count($p)===2)$e[$p[0]]=$p[1];
}
if (($e["POC_DIALECT"]??"")!=="dm"
    ||($e["POC_AI_HOST"]??"")!=="127.0.0.1"
    ||($e["POC_AI_PORT"]??"")!=="5238"
    ||($e["POC_AI_SCHEMA"]??"")!=="AIZHCT_APP"
    ||($e["POC_AI_USER"]??"")!=="AIZHCT_APP") {
    throw new RuntimeException("C identity mismatch");
}
$d=new PDO("dm:host=127.0.0.1;port=5238;schema=AIZHCT_APP",
    $e["POC_AI_USER"],$e["POC_AI_PASSWORD"],
    [PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION,PDO::ATTR_CASE=>PDO::CASE_LOWER]);
if($d->query("SELECT SYS_CONTEXT(\x27USERENV\x27,\x27CURRENT_SCHEMA\x27) FROM DUAL")
   ->fetchColumn()!=="AIZHCT_APP") throw new RuntimeException("C schema drift");
$tables=["YOSHOP_ARTICLE","YOSHOP_ARTICLE_CATEGORY","YOSHOP_UPLOAD_FILE",
    "YOSHOP_EXPRESS","YOSHOP_PRINTER","YOSHOP_HELP","YOSHOP_SIGN",
    "YOSHOP_STORE_USER","YOSHOP_PAYMENT_TEMPLATE","YOSHOP_SPORT",
    "YOSHOP_USER_SCORE"];
$out=[];
foreach($tables as $t){
    $s=$d->prepare("SELECT COUNT(*) FROM USER_TABLES WHERE TABLE_NAME=?");
    $s->execute([$t]);
    $out[$t]["present"]=(int)$s->fetchColumn()===1;
    if($out[$t]["present"]){
        $s=$d->prepare("SELECT COUNT(*) FROM USER_TAB_COLUMNS"
            ." WHERE TABLE_NAME=? AND COLUMN_NAME=\x27STORE_ID\x27");
        $s->execute([$t]);
        $scoped=(int)$s->fetchColumn()===1;
        $out[$t]["store_id_column"]=$scoped;
        $q="SELECT COUNT(*) FROM ".$t;
        if($scoped)$q.=" WHERE STORE_ID=10001";
        if($t==="YOSHOP_ARTICLE")$q.=" AND IS_DELETE=0";
        $out[$t]["rows"]=(int)$d->query($q)->fetchColumn();
    }
}
$r=$d->query("SELECT MIN(ARTICLE_ID) FROM YOSHOP_ARTICLE"
    ." WHERE STORE_ID=10001 AND IS_DELETE=0")->fetchColumn();
$out["article_min_id"]=$r===null?null:(int)$r;
echo json_encode(["schema"=>"AIZHCT_APP","tables"=>$out,
    "business_http"=>0,"business_dml"=>0]),"\n";
';
