#!/bin/bash
set -euo pipefail
[[ $# -eq 1 && "${1-}" == '--preflight' ]] || exit 78
[[ "$(readlink -f /proc/53772/exe)" == /www/server/php/74/bin/php ]]
cdx_ld=''
cdx_svc=''
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,"C_ARTICLE_SCHEMA_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 target changed");
}
$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");
$out=[];
foreach(["YOSHOP_ARTICLE_CATEGORY","YOSHOP_ARTICLE","YOSHOP_UPLOAD_FILE"] as $t){
    $s=$d->prepare("SELECT COLUMN_NAME,DATA_TYPE,DATA_LENGTH,DATA_PRECISION,DATA_SCALE,"
        ."NULLABLE,DATA_DEFAULT FROM USER_TAB_COLUMNS WHERE TABLE_NAME=? ORDER BY COLUMN_ID");
    $s->execute([$t]);$out[$t]["columns"]=$s->fetchAll(PDO::FETCH_ASSOC);
    $s=$d->prepare("SELECT CONSTRAINT_NAME,CONSTRAINT_TYPE,STATUS"
        ." FROM USER_CONSTRAINTS WHERE TABLE_NAME=? ORDER BY CONSTRAINT_NAME");
    $s->execute([$t]);$out[$t]["constraints"]=$s->fetchAll(PDO::FETCH_ASSOC);
    $s=$d->prepare("SELECT TRIGGER_NAME,STATUS FROM USER_TRIGGERS WHERE TABLE_NAME=?");
    $s->execute([$t]);$out[$t]["triggers"]=$s->fetchAll(PDO::FETCH_ASSOC);
    $out[$t]["store_rows"]=(int)$d->query("SELECT COUNT(*) FROM ".$t
        ." WHERE STORE_ID=10001")->fetchColumn();
}
echo json_encode(["schema"=>"AIZHCT_APP","tables"=>$out,
    "business_http"=>0,"business_dml"=>0],JSON_UNESCAPED_SLASHES),"\n";
';
