[INFO] cloning repository https://github.com/LittleGuest/hairy-crabs
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/LittleGuest/hairy-crabs" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FLittleGuest%2Fhairy-crabs", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FLittleGuest%2Fhairy-crabs'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 53652468f337d0d35b7cc5fb33ef8e50ee6ea5d4
[INFO] checking LittleGuest/hairy-crabs against master#4d1bd0db7f489b22c6d8aa2385937a95412c015b for pr-114682
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FLittleGuest%2Fhairy-crabs" "/workspace/builds/worker-6-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc1/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/LittleGuest/hairy-crabs on toolchain 4d1bd0db7f489b22c6d8aa2385937a95412c015b
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+4d1bd0db7f489b22c6d8aa2385937a95412c015b" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] started tweaking git repo https://github.com/LittleGuest/hairy-crabs
[INFO] finished tweaking git repo https://github.com/LittleGuest/hairy-crabs
[INFO] tweaked toml for git repo https://github.com/LittleGuest/hairy-crabs written to /workspace/builds/worker-6-tc1/source/Cargo.toml
[INFO] crate git repo https://github.com/LittleGuest/hairy-crabs already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+4d1bd0db7f489b22c6d8aa2385937a95412c015b" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: virtual workspace defaulting to `resolver = "1"` despite one or more workspace members being on edition 2021 which implies `resolver = "2"`
[INFO] [stderr] note: to keep the current resolver, specify `workspace.resolver = "1"` in the workspace root's manifest
[INFO] [stderr] note: to use the edition 2021 resolver, specify `workspace.resolver = "2"` in the workspace root's manifest
[INFO] [stderr] note: for more details see https://doc.rust-lang.org/cargo/reference/resolver.html#resolver-versions
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded rbatis_sql_macro v3.0.15
[INFO] [stderr]   Downloaded fast_log v1.5.1
[INFO] [stderr]   Downloaded validator_derive v0.14.0
[INFO] [stderr]   Downloaded poem-derive v1.3.29
[INFO] [stderr]   Downloaded rbatis-macro-driver v3.1.1
[INFO] [stderr]   Downloaded xlsxwriter v0.3.5
[INFO] [stderr]   Downloaded simple_asn1 v0.6.1
[INFO] [stderr]   Downloaded jsonwebtoken v8.1.0
[INFO] [stderr]   Downloaded rbatis_sql v3.0.23
[INFO] [stderr]   Downloaded num-bigint-dig v0.8.1
[INFO] [stderr]   Downloaded libxlsxwriter-sys v1.1.1
[INFO] [stderr]   Downloaded simple_redis v0.6.1
[INFO] [stderr]   Downloaded poem v1.3.29
[INFO] [stderr]   Downloaded rbatis v3.1.6
[INFO] [stderr]   Downloaded quick-xml v0.19.0
[INFO] [stderr]   Downloaded calamine v0.18.0
[INFO] [stderr]   Downloaded rbson v2.0.3
[INFO] [stderr]   Downloaded async_static v0.1.3
[INFO] [stderr]   Downloaded simple_excel_writer v0.1.9
[INFO] [stderr]   Downloaded rbatis-core v3.1.7
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:2788e3201cd34a07e3172128adcd8b3090168a8e3bcc40d7c032b9dda1df7d1c" "/opt/rustwide/cargo-home/bin/cargo" "+4d1bd0db7f489b22c6d8aa2385937a95412c015b" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 3ade93e61e68c75321662606b1539f1c02717c7615e5a66662060bc7d156538e
[INFO] running `Command { std: "docker" "start" "-a" "3ade93e61e68c75321662606b1539f1c02717c7615e5a66662060bc7d156538e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "3ade93e61e68c75321662606b1539f1c02717c7615e5a66662060bc7d156538e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "3ade93e61e68c75321662606b1539f1c02717c7615e5a66662060bc7d156538e", kill_on_drop: false }`
[INFO] [stdout] 3ade93e61e68c75321662606b1539f1c02717c7615e5a66662060bc7d156538e
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:2788e3201cd34a07e3172128adcd8b3090168a8e3bcc40d7c032b9dda1df7d1c" "/opt/rustwide/cargo-home/bin/cargo" "+4d1bd0db7f489b22c6d8aa2385937a95412c015b" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 1190b6754d91adc0e4bb326344d3f38e1c6ed6dfdd5568dc8dbfa79c19927215
[INFO] running `Command { std: "docker" "start" "-a" "1190b6754d91adc0e4bb326344d3f38e1c6ed6dfdd5568dc8dbfa79c19927215", kill_on_drop: false }`
[INFO] [stderr] warning: virtual workspace defaulting to `resolver = "1"` despite one or more workspace members being on edition 2021 which implies `resolver = "2"`
[INFO] [stderr] note: to keep the current resolver, specify `workspace.resolver = "1"` in the workspace root's manifest
[INFO] [stderr] note: to use the edition 2021 resolver, specify `workspace.resolver = "2"` in the workspace root's manifest
[INFO] [stderr] note: for more details see https://doc.rust-lang.org/cargo/reference/resolver.html#resolver-versions
[INFO] [stderr]    Compiling proc-macro2 v1.0.37
[INFO] [stderr]    Compiling syn v1.0.91
[INFO] [stderr]    Compiling unicode-xid v0.2.2
[INFO] [stderr]    Compiling libc v0.2.124
[INFO] [stderr]    Compiling serde_derive v1.0.136
[INFO] [stderr]    Compiling serde v1.0.136
[INFO] [stderr]    Compiling memchr v2.4.1
[INFO] [stderr]    Compiling log v0.4.16
[INFO] [stderr]    Compiling cc v1.0.73
[INFO] [stderr]    Compiling libm v0.2.2
[INFO] [stderr]     Checking lazy_static v1.4.0
[INFO] [stderr]    Compiling ahash v0.7.6
[INFO] [stderr]    Compiling num-traits v0.2.14
[INFO] [stderr]    Compiling indexmap v1.8.1
[INFO] [stderr]     Checking smallvec v1.8.0
[INFO] [stderr]     Checking itoa v1.0.1
[INFO] [stderr]    Compiling num-integer v0.1.44
[INFO] [stderr]    Compiling regex-syntax v0.6.25
[INFO] [stderr]    Compiling typenum v1.15.0
[INFO] [stderr]     Checking pin-project-lite v0.2.8
[INFO] [stderr]    Compiling serde_json v1.0.81
[INFO] [stderr]    Compiling parking_lot_core v0.9.2
[INFO] [stderr]    Compiling crossbeam-utils v0.8.8
[INFO] [stderr]     Checking ryu v1.0.9
[INFO] [stderr]     Checking byteorder v1.4.3
[INFO] [stderr]    Compiling futures-channel v0.3.21
[INFO] [stderr]     Checking tinyvec v1.5.1
[INFO] [stderr]    Compiling ucd-trie v0.1.3
[INFO] [stderr]    Compiling standback v0.2.17
[INFO] [stderr]     Checking base64ct v1.5.0
[INFO] [stderr]    Compiling pest v2.1.3
[INFO] [stderr]     Checking getrandom v0.2.6
[INFO] [stderr]     Checking time v0.1.43
[INFO] [stderr]     Checking num_cpus v1.13.1
[INFO] [stderr]     Checking generic-array v0.14.5
[INFO] [stderr]     Checking socket2 v0.4.4
[INFO] [stderr]    Compiling quote v1.0.18
[INFO] [stderr]    Compiling aho-corasick v0.7.18
[INFO] [stderr]     Checking rand_core v0.6.3
[INFO] [stderr]     Checking signal-hook-registry v1.4.0
[INFO] [stderr]     Checking parking_lot v0.12.0
[INFO] [stderr]     Checking unicode-bidi v0.3.7
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]    Compiling maplit v1.0.2
[INFO] [stderr]     Checking hashbrown v0.11.2
[INFO] [stderr]    Compiling once_cell v1.12.0
[INFO] [stderr]     Checking pem-rfc7468 v0.3.1
[INFO] [stderr]    Compiling async-trait v0.1.53
[INFO] [stderr]    Compiling parking_lot_core v0.8.5
[INFO] [stderr]     Checking const-oid v0.7.1
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]    Compiling pest_meta v2.1.3
[INFO] [stderr]    Compiling spin v0.5.2
[INFO] [stderr]    Compiling num-iter v0.1.43
[INFO] [stderr]    Compiling ring v0.16.20
[INFO] [stderr]     Checking crypto-common v0.1.3
[INFO] [stderr]     Checking block-buffer v0.10.2
[INFO] [stderr]     Checking crypto-bigint v0.3.2
[INFO] [stderr]     Checking instant v0.1.12
[INFO] [stderr]    Compiling proc-macro-error-attr v1.0.4
[INFO] [stderr]     Checking unicode-normalization v0.1.19
[INFO] [stderr]     Checking digest v0.10.3
[INFO] [stderr]     Checking cpufeatures v0.2.2
[INFO] [stderr]    Compiling crossbeam-queue v0.3.5
[INFO] [stderr]     Checking zeroize v1.5.5
[INFO] [stderr]    Compiling tinyvec_macros v0.1.0
[INFO] [stderr]    Compiling proc-macro-error v1.0.4
[INFO] [stderr]    Compiling num-bigint v0.3.3
[INFO] [stderr]    Compiling pkg-config v0.3.25
[INFO] [stderr]    Compiling matches v0.1.9
[INFO] [stderr]    Compiling vcpkg v0.2.15
[INFO] [stderr]    Compiling const_fn v0.4.9
[INFO] [stderr]    Compiling num-bigint-dig v0.8.1
[INFO] [stderr]    Compiling regex v1.5.5
[INFO] [stderr]     Checking der v0.5.1
[INFO] [stderr]     Checking parking_lot v0.11.2
[INFO] [stderr]     Checking idna v0.2.3
[INFO] [stderr]     Checking sha-1 v0.10.0
[INFO] [stderr]    Compiling time v0.2.27
[INFO] [stderr]     Checking hex v0.4.3
[INFO] [stderr]    Compiling rust_decimal v1.23.1
[INFO] [stderr]     Checking minimal-lexical v0.2.1
[INFO] [stderr]     Checking spki v0.5.4
[INFO] [stderr]    Compiling percent-encoding v2.1.0
[INFO] [stderr]    Compiling libsqlite3-sys v0.24.2
[INFO] [stderr]     Checking pkcs8 v0.8.0
[INFO] [stderr]     Checking nom v7.1.1
[INFO] [stderr]     Checking url v2.2.2
[INFO] [stderr]    Compiling form_urlencoded v1.0.1
[INFO] [stderr]     Checking pkcs1 v0.3.3
[INFO] [stderr]     Checking spin v0.9.3
[INFO] [stderr]     Checking arrayvec v0.7.2
[INFO] [stderr]     Checking crc-catalog v1.1.1
[INFO] [stderr]     Checking unicode_categories v0.1.1
[INFO] [stderr]     Checking crc v2.1.0
[INFO] [stderr]     Checking futures-intrusive v0.4.0
[INFO] [stderr]     Checking stringprep v0.1.2
[INFO] [stderr]     Checking atoi v0.4.0
[INFO] [stderr]     Checking sha2 v0.10.2
[INFO] [stderr]     Checking hashlink v0.7.0
[INFO] [stderr]     Checking tracing-core v0.1.26
[INFO] [stderr]     Checking event-listener v2.5.2
[INFO] [stderr]     Checking bit-vec v0.6.3
[INFO] [stderr]    Compiling paste v1.0.7
[INFO] [stderr]    Compiling base64 v0.13.0
[INFO] [stderr]     Checking dashmap v4.0.2
[INFO] [stderr]     Checking http v0.2.6
[INFO] [stderr]    Compiling num-bigint v0.4.3
[INFO] [stderr]    Compiling httparse v1.7.0
[INFO] [stderr]     Checking quickcheck v1.0.3
[INFO] [stderr]     Checking try-lock v0.2.3
[INFO] [stderr]    Compiling time-macros v0.2.4
[INFO] [stderr]     Checking httpdate v1.0.2
[INFO] [stderr]     Checking rsa v0.6.1
[INFO] [stderr]     Checking combine v4.6.3
[INFO] [stderr]    Compiling uncased v0.9.6
[INFO] [stderr]     Checking itoa v0.4.8
[INFO] [stderr]    Compiling anyhow v1.0.56
[INFO] [stderr]    Compiling if_chain v1.0.2
[INFO] [stderr]     Checking tower-service v0.3.1
[INFO] [stderr]     Checking mime v0.3.16
[INFO] [stderr]     Checking dtoa v0.4.8
[INFO] [stderr]     Checking pem v1.0.2
[INFO] [stderr]    Compiling memoffset v0.6.5
[INFO] [stderr]    Compiling crossbeam-epoch v0.9.8
[INFO] [stderr]    Compiling siphasher v0.3.10
[INFO] [stderr]    Compiling ppv-lite86 v0.2.16
[INFO] [stderr]    Compiling glob v0.3.0
[INFO] [stderr]     Checking crossbeam-channel v0.5.4
[INFO] [stderr]    Compiling phf_shared v0.10.0
[INFO] [stderr]     Checking thread_local v1.1.4
[INFO] [stderr]    Compiling clang-sys v1.3.1
[INFO] [stderr]    Compiling nom v5.1.2
[INFO] [stderr]    Compiling atty v0.2.14
[INFO] [stderr]    Compiling unicode-width v0.1.9
[INFO] [stderr]    Compiling strsim v0.10.0
[INFO] [stderr]    Compiling ident_case v1.0.1
[INFO] [stderr]    Compiling textwrap v0.11.0
[INFO] [stderr]    Compiling libloading v0.7.3
[INFO] [stderr]     Checking headers-core v0.2.0
[INFO] [stderr]     Checking http-body v0.4.4
[INFO] [stderr]     Checking crossbeam-deque v0.8.1
[INFO] [stderr]     Checking headers v0.3.7
[INFO] [stderr]     Checking webpki v0.21.4
[INFO] [stderr]     Checking sct v0.6.1
[INFO] [stderr]    Compiling crc32fast v1.3.2
[INFO] [stderr]    Compiling strsim v0.8.0
[INFO] [stderr]     Checking crossbeam v0.8.1
[INFO] [stderr]    Compiling humantime v2.1.0
[INFO] [stderr]    Compiling bitflags v1.3.2
[INFO] [stderr]    Compiling bindgen v0.58.1
[INFO] [stderr]    Compiling termcolor v1.1.3
[INFO] [stderr]    Compiling vec_map v0.8.2
[INFO] [stderr]    Compiling ansi_term v0.12.1
[INFO] [stderr]     Checking webpki-roots v0.21.1
[INFO] [stderr]    Compiling pest_generator v2.1.3
[INFO] [stderr]     Checking time v0.3.9
[INFO] [stderr]    Compiling validator_types v0.14.0
[INFO] [stderr]    Compiling darling_core v0.13.4
[INFO] [stderr]    Compiling phf v0.10.1
[INFO] [stderr]    Compiling clap v2.34.0
[INFO] [stderr]    Compiling parse-zoneinfo v0.3.0
[INFO] [stderr]    Compiling which v3.1.1
[INFO] [stderr]    Compiling rustc-hash v1.1.0
[INFO] [stderr]    Compiling shlex v1.1.0
[INFO] [stderr]    Compiling peeking_take_while v0.1.2
[INFO] [stderr]     Checking adler v1.0.2
[INFO] [stderr]    Compiling lazycell v1.3.0
[INFO] [stderr]    Compiling encoding_rs v0.8.31
[INFO] [stderr]     Checking miniz_oxide v0.5.1
[INFO] [stderr]    Compiling phf_generator v0.10.0
[INFO] [stderr]     Checking bstr v0.2.17
[INFO] [stderr]    Compiling phf_codegen v0.10.0
[INFO] [stderr]     Checking unic-char-range v0.9.0
[INFO] [stderr]     Checking unic-common v0.9.0
[INFO] [stderr]    Compiling chrono-tz-build v0.0.2
[INFO] [stderr]     Checking same-file v1.0.6
[INFO] [stderr]     Checking walkdir v2.3.2
[INFO] [stderr]     Checking flate2 v1.0.23
[INFO] [stderr]     Checking unic-ucd-version v0.9.0
[INFO] [stderr]     Checking unic-char-property v0.9.0
[INFO] [stderr]     Checking deunicode v0.4.3
[INFO] [stderr]     Checking unic-ucd-segment v0.9.0
[INFO] [stderr]     Checking crab-util v0.1.0 (/opt/rustwide/workdir/crab-util)
[INFO] [stderr]    Compiling heck v0.4.0
[INFO] [stderr]     Checking os_str_bytes v6.0.0
[INFO] [stderr]     Checking slug v0.1.4
[INFO] [stderr]    Compiling chrono-tz v0.6.1
[INFO] [stderr]     Checking sharded-slab v0.1.4
[INFO] [stderr]     Checking unic-segment v0.9.0
[INFO] [stderr]     Checking textwrap v0.15.0
[INFO] [stderr]     Checking clap_lex v0.2.0
[INFO] [stderr]     Checking humansize v1.1.1
[INFO] [stderr] error: could not compile `syn` (lib)
[INFO] [stderr] 
[INFO] [stderr] Caused by:
[INFO] [stderr]   process didn't exit successfully: `/opt/rustwide/rustup-home/toolchains/4d1bd0db7f489b22c6d8aa2385937a95412c015b/bin/rustc --crate-name syn --edition=2018 /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/syn-1.0.91/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --crate-type lib --emit=dep-info,metadata,link -C embed-bitcode=no --cfg 'feature="clone-impls"' --cfg 'feature="default"' --cfg 'feature="derive"' --cfg 'feature="extra-traits"' --cfg 'feature="full"' --cfg 'feature="parsing"' --cfg 'feature="printing"' --cfg 'feature="proc-macro"' --cfg 'feature="quote"' --cfg 'feature="visit"' --cfg 'feature="visit-mut"' -C metadata=9e08a92e2d17115c -C extra-filename=-9e08a92e2d17115c --out-dir /opt/rustwide/target/debug/deps -L dependency=/opt/rustwide/target/debug/deps --extern proc_macro2=/opt/rustwide/target/debug/deps/libproc_macro2-265ebb94fe6014b7.rmeta --extern quote=/opt/rustwide/target/debug/deps/libquote-497bc961d3431716.rmeta --extern unicode_xid=/opt/rustwide/target/debug/deps/libunicode_xid-aaa3863a121c329e.rmeta --cap-lints allow --cap-lints=forbid` (signal: 9, SIGKILL: kill)
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stderr] error: could not compile `syn` (lib)
[INFO] [stderr] 
[INFO] [stderr] Caused by:
[INFO] [stderr]   process didn't exit successfully: `/opt/rustwide/rustup-home/toolchains/4d1bd0db7f489b22c6d8aa2385937a95412c015b/bin/rustc --crate-name syn --edition=2018 /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/syn-1.0.91/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --crate-type lib --emit=dep-info,metadata -C embed-bitcode=no -C debuginfo=2 --cfg 'feature="clone-impls"' --cfg 'feature="default"' --cfg 'feature="derive"' --cfg 'feature="extra-traits"' --cfg 'feature="full"' --cfg 'feature="parsing"' --cfg 'feature="printing"' --cfg 'feature="proc-macro"' --cfg 'feature="quote"' --cfg 'feature="visit"' --cfg 'feature="visit-mut"' -C metadata=3684ab0c5eaae35d -C extra-filename=-3684ab0c5eaae35d --out-dir /opt/rustwide/target/debug/deps -L dependency=/opt/rustwide/target/debug/deps --extern proc_macro2=/opt/rustwide/target/debug/deps/libproc_macro2-d505eac4dcd572b6.rmeta --extern quote=/opt/rustwide/target/debug/deps/libquote-2e1a96bc2e532633.rmeta --extern unicode_xid=/opt/rustwide/target/debug/deps/libunicode_xid-e9d67c551b4501fe.rmeta --cap-lints allow --cap-lints=forbid` (signal: 9, SIGKILL: kill)
[INFO] running `Command { std: "docker" "inspect" "1190b6754d91adc0e4bb326344d3f38e1c6ed6dfdd5568dc8dbfa79c19927215", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1190b6754d91adc0e4bb326344d3f38e1c6ed6dfdd5568dc8dbfa79c19927215", kill_on_drop: false }`
[INFO] [stdout] 1190b6754d91adc0e4bb326344d3f38e1c6ed6dfdd5568dc8dbfa79c19927215
[INFO] checking LittleGuest/hairy-crabs against try#785364c7e5e0804473a3fddfb579798ea14e3493 for pr-114682
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FLittleGuest%2Fhairy-crabs" "/workspace/builds/worker-6-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc2/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/LittleGuest/hairy-crabs on toolchain 785364c7e5e0804473a3fddfb579798ea14e3493
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+785364c7e5e0804473a3fddfb579798ea14e3493" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] started tweaking git repo https://github.com/LittleGuest/hairy-crabs
[INFO] finished tweaking git repo https://github.com/LittleGuest/hairy-crabs
[INFO] tweaked toml for git repo https://github.com/LittleGuest/hairy-crabs written to /workspace/builds/worker-6-tc2/source/Cargo.toml
[INFO] crate git repo https://github.com/LittleGuest/hairy-crabs already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+785364c7e5e0804473a3fddfb579798ea14e3493" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: virtual workspace defaulting to `resolver = "1"` despite one or more workspace members being on edition 2021 which implies `resolver = "2"`
[INFO] [stderr] note: to keep the current resolver, specify `workspace.resolver = "1"` in the workspace root's manifest
[INFO] [stderr] note: to use the edition 2021 resolver, specify `workspace.resolver = "2"` in the workspace root's manifest
[INFO] [stderr] note: for more details see https://doc.rust-lang.org/cargo/reference/resolver.html#resolver-versions
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:2788e3201cd34a07e3172128adcd8b3090168a8e3bcc40d7c032b9dda1df7d1c" "/opt/rustwide/cargo-home/bin/cargo" "+785364c7e5e0804473a3fddfb579798ea14e3493" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 42752f8761b292533d925ef2dd884691288d7a0bda077f1692625b50c0ceb178
[INFO] running `Command { std: "docker" "start" "-a" "42752f8761b292533d925ef2dd884691288d7a0bda077f1692625b50c0ceb178", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "42752f8761b292533d925ef2dd884691288d7a0bda077f1692625b50c0ceb178", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "42752f8761b292533d925ef2dd884691288d7a0bda077f1692625b50c0ceb178", kill_on_drop: false }`
[INFO] [stdout] 42752f8761b292533d925ef2dd884691288d7a0bda077f1692625b50c0ceb178
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:2788e3201cd34a07e3172128adcd8b3090168a8e3bcc40d7c032b9dda1df7d1c" "/opt/rustwide/cargo-home/bin/cargo" "+785364c7e5e0804473a3fddfb579798ea14e3493" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] f18eb651e15ca9c9ea768828fdfa87d26a0192e9ecbc9a32717d7115683bf731
[INFO] running `Command { std: "docker" "start" "-a" "f18eb651e15ca9c9ea768828fdfa87d26a0192e9ecbc9a32717d7115683bf731", kill_on_drop: false }`
[INFO] [stderr] warning: virtual workspace defaulting to `resolver = "1"` despite one or more workspace members being on edition 2021 which implies `resolver = "2"`
[INFO] [stderr] note: to keep the current resolver, specify `workspace.resolver = "1"` in the workspace root's manifest
[INFO] [stderr] note: to use the edition 2021 resolver, specify `workspace.resolver = "2"` in the workspace root's manifest
[INFO] [stderr] note: for more details see https://doc.rust-lang.org/cargo/reference/resolver.html#resolver-versions
[INFO] [stderr]    Compiling proc-macro2 v1.0.37
[INFO] [stderr]    Compiling syn v1.0.91
[INFO] [stderr]    Compiling unicode-xid v0.2.2
[INFO] [stderr]    Compiling libc v0.2.124
[INFO] [stderr]    Compiling serde_derive v1.0.136
[INFO] [stderr]    Compiling serde v1.0.136
[INFO] [stderr]    Compiling memchr v2.4.1
[INFO] [stderr]    Compiling log v0.4.16
[INFO] [stderr]    Compiling cc v1.0.73
[INFO] [stderr]    Compiling libm v0.2.2
[INFO] [stderr]     Checking lazy_static v1.4.0
[INFO] [stderr]    Compiling ahash v0.7.6
[INFO] [stderr]    Compiling num-traits v0.2.14
[INFO] [stderr]    Compiling indexmap v1.8.1
[INFO] [stderr]     Checking smallvec v1.8.0
[INFO] [stderr]     Checking itoa v1.0.1
[INFO] [stderr]    Compiling num-integer v0.1.44
[INFO] [stderr]    Compiling regex-syntax v0.6.25
[INFO] [stderr]    Compiling typenum v1.15.0
[INFO] [stderr]     Checking pin-project-lite v0.2.8
[INFO] [stderr]    Compiling serde_json v1.0.81
[INFO] [stderr]    Compiling parking_lot_core v0.9.2
[INFO] [stderr]    Compiling crossbeam-utils v0.8.8
[INFO] [stderr]     Checking ryu v1.0.9
[INFO] [stderr]     Checking byteorder v1.4.3
[INFO] [stderr]    Compiling futures-channel v0.3.21
[INFO] [stderr]     Checking tinyvec v1.5.1
[INFO] [stderr]    Compiling ucd-trie v0.1.3
[INFO] [stderr]    Compiling standback v0.2.17
[INFO] [stderr]     Checking base64ct v1.5.0
[INFO] [stderr]    Compiling maplit v1.0.2
[INFO] [stderr]    Compiling quote v1.0.18
[INFO] [stderr]    Compiling pest v2.1.3
[INFO] [stderr]    Compiling aho-corasick v0.7.18
[INFO] [stderr]    Compiling once_cell v1.12.0
[INFO] [stderr]     Checking unicode-bidi v0.3.7
[INFO] [stderr]    Compiling getrandom v0.2.6
[INFO] [stderr]     Checking pem-rfc7468 v0.3.1
[INFO] [stderr]     Checking generic-array v0.14.5
[INFO] [stderr]    Compiling spin v0.5.2
[INFO] [stderr]    Compiling parking_lot_core v0.8.5
[INFO] [stderr]     Checking time v0.1.43
[INFO] [stderr]     Checking num_cpus v1.13.1
[INFO] [stderr]     Checking socket2 v0.4.4
[INFO] [stderr]     Checking signal-hook-registry v1.4.0
[INFO] [stderr]     Checking unicode-normalization v0.1.19
[INFO] [stderr]     Checking rand_core v0.6.3
[INFO] [stderr]    Compiling async-trait v0.1.53
[INFO] [stderr]    Compiling ring v0.16.20
[INFO] [stderr]    Compiling pest_meta v2.1.3
[INFO] [stderr]     Checking parking_lot v0.12.0
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking const-oid v0.7.1
[INFO] [stderr]    Compiling hashbrown v0.11.2
[INFO] [stderr]    Compiling proc-macro-error-attr v1.0.4
[INFO] [stderr]     Checking instant v0.1.12
[INFO] [stderr]    Compiling num-iter v0.1.43
[INFO] [stderr]    Compiling tinyvec_macros v0.1.0
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]    Compiling crossbeam-queue v0.3.5
[INFO] [stderr]     Checking cpufeatures v0.2.2
[INFO] [stderr]     Checking zeroize v1.5.5
[INFO] [stderr]     Checking block-buffer v0.10.2
[INFO] [stderr]     Checking crypto-common v0.1.3
[INFO] [stderr]     Checking crypto-bigint v0.3.2
[INFO] [stderr]    Compiling regex v1.5.5
[INFO] [stderr]     Checking digest v0.10.3
[INFO] [stderr]     Checking idna v0.2.3
[INFO] [stderr]    Compiling num-bigint v0.3.3
[INFO] [stderr]    Compiling proc-macro-error v1.0.4
[INFO] [stderr]    Compiling const_fn v0.4.9
[INFO] [stderr]    Compiling num-bigint-dig v0.8.1
[INFO] [stderr]    Compiling matches v0.1.9
[INFO] [stderr]    Compiling vcpkg v0.2.15
[INFO] [stderr]    Compiling pkg-config v0.3.25
[INFO] [stderr]     Checking der v0.5.1
[INFO] [stderr]     Checking url v2.2.2
[INFO] [stderr]     Checking parking_lot v0.11.2
[INFO] [stderr]     Checking sha-1 v0.10.0
[INFO] [stderr]    Compiling time v0.2.27
[INFO] [stderr]    Compiling percent-encoding v2.1.0
[INFO] [stderr]     Checking hex v0.4.3
[INFO] [stderr]    Compiling rust_decimal v1.23.1
[INFO] [stderr]     Checking minimal-lexical v0.2.1
[INFO] [stderr]    Compiling form_urlencoded v1.0.1
[INFO] [stderr]     Checking spki v0.5.4
[INFO] [stderr]     Checking nom v7.1.1
[INFO] [stderr]     Checking spin v0.9.3
[INFO] [stderr]     Checking crc-catalog v1.1.1
[INFO] [stderr]     Checking arrayvec v0.7.2
[INFO] [stderr]     Checking unicode_categories v0.1.1
[INFO] [stderr]     Checking pkcs8 v0.8.0
[INFO] [stderr]    Compiling libsqlite3-sys v0.24.2
[INFO] [stderr]     Checking crc v2.1.0
[INFO] [stderr]     Checking futures-intrusive v0.4.0
[INFO] [stderr]     Checking sha2 v0.10.2
[INFO] [stderr]     Checking stringprep v0.1.2
[INFO] [stderr]     Checking hashlink v0.7.0
[INFO] [stderr]     Checking pkcs1 v0.3.3
[INFO] [stderr]     Checking atoi v0.4.0
[INFO] [stderr]     Checking tracing-core v0.1.26
[INFO] [stderr]     Checking event-listener v2.5.2
[INFO] [stderr]    Compiling base64 v0.13.0
[INFO] [stderr]    Compiling paste v1.0.7
[INFO] [stderr]     Checking bit-vec v0.6.3
[INFO] [stderr]     Checking dashmap v4.0.2
[INFO] [stderr]     Checking http v0.2.6
[INFO] [stderr]     Checking rsa v0.6.1
[INFO] [stderr]    Compiling num-bigint v0.4.3
[INFO] [stderr]    Compiling httparse v1.7.0
[INFO] [stderr]     Checking quickcheck v1.0.3
[INFO] [stderr]    Compiling time-macros v0.2.4
[INFO] [stderr]     Checking httpdate v1.0.2
[INFO] [stderr]     Checking try-lock v0.2.3
[INFO] [stderr]     Checking combine v4.6.3
[INFO] [stderr]    Compiling uncased v0.9.6
[INFO] [stderr]    Compiling anyhow v1.0.56
[INFO] [stderr]    Compiling if_chain v1.0.2
[INFO] [stderr]     Checking tower-service v0.3.1
[INFO] [stderr]    Compiling pest_generator v2.1.3
[INFO] [stderr]    Compiling validator_types v0.14.0
[INFO] [stderr]     Checking dtoa v0.4.8
[INFO] [stderr]     Checking itoa v0.4.8
[INFO] [stderr]     Checking pem v1.0.2
[INFO] [stderr]    Compiling memoffset v0.6.5
[INFO] [stderr]    Compiling crossbeam-epoch v0.9.8
[INFO] [stderr]    Compiling siphasher v0.3.10
[INFO] [stderr]    Compiling ppv-lite86 v0.2.16
[INFO] [stderr]    Compiling glob v0.3.0
[INFO] [stderr]     Checking crossbeam-channel v0.5.4
[INFO] [stderr]    Compiling nom v5.1.2
[INFO] [stderr]    Compiling phf_shared v0.10.0
[INFO] [stderr]     Checking thread_local v1.1.4
[INFO] [stderr]     Checking http-body v0.4.4
[INFO] [stderr]     Checking headers-core v0.2.0
[INFO] [stderr]    Compiling atty v0.2.14
[INFO] [stderr]    Compiling strsim v0.10.0
[INFO] [stderr]     Checking headers v0.3.7
[INFO] [stderr]    Compiling ident_case v1.0.1
[INFO] [stderr]    Compiling unicode-width v0.1.9
[INFO] [stderr]     Checking crossbeam-deque v0.8.1
[INFO] [stderr]    Compiling darling_core v0.13.4
[INFO] [stderr]    Compiling clang-sys v1.3.1
[INFO] [stderr]    Compiling textwrap v0.11.0
[INFO] [stderr]     Checking crossbeam v0.8.1
[INFO] [stderr]    Compiling libloading v0.7.3
[INFO] [stderr]    Compiling strsim v0.8.0
[INFO] [stderr]    Compiling crc32fast v1.3.2
[INFO] [stderr]    Compiling humantime v2.1.0
[INFO] [stderr]     Checking webpki v0.21.4
[INFO] [stderr]     Checking sct v0.6.1
[INFO] [stderr]    Compiling ansi_term v0.12.1
[INFO] [stderr]    Compiling vec_map v0.8.2
[INFO] [stderr]    Compiling bindgen v0.58.1
[INFO] [stderr]    Compiling bitflags v1.3.2
[INFO] [stderr]    Compiling termcolor v1.1.3
[INFO] [stderr]    Compiling phf v0.10.1
[INFO] [stderr]    Compiling clap v2.34.0
[INFO] [stderr]     Checking webpki-roots v0.21.1
[INFO] [stderr]    Compiling phf_generator v0.10.0
[INFO] [stderr]    Compiling parse-zoneinfo v0.3.0
[INFO] [stderr]    Compiling which v3.1.1
[INFO] [stderr]    Compiling peeking_take_while v0.1.2
[INFO] [stderr]    Compiling phf_codegen v0.10.0
[INFO] [stderr]     Checking time v0.3.9
[INFO] [stderr]     Checking adler v1.0.2
[INFO] [stderr]    Compiling lazycell v1.3.0
[INFO] [stderr]    Compiling rustc-hash v1.1.0
[INFO] [stderr]    Compiling shlex v1.1.0
[INFO] [stderr]    Compiling encoding_rs v0.8.31
[INFO] [stderr]     Checking miniz_oxide v0.5.1
[INFO] [stderr]     Checking bstr v0.2.17
[INFO] [stderr]     Checking unic-char-range v0.9.0
[INFO] [stderr]    Compiling chrono-tz-build v0.0.2
[INFO] [stderr]     Checking unic-common v0.9.0
[INFO] [stderr]     Checking same-file v1.0.6
[INFO] [stderr]     Checking unic-ucd-version v0.9.0
[INFO] [stderr]     Checking walkdir v2.3.2
[INFO] [stderr]     Checking unic-char-property v0.9.0
[INFO] [stderr]     Checking flate2 v1.0.23
[INFO] [stderr]     Checking unic-ucd-segment v0.9.0
[INFO] [stderr]     Checking deunicode v0.4.3
[INFO] [stderr]     Checking crab-util v0.1.0 (/opt/rustwide/workdir/crab-util)
[INFO] [stderr]    Compiling heck v0.4.0
[INFO] [stderr]     Checking os_str_bytes v6.0.0
[INFO] [stderr]     Checking slug v0.1.4
[INFO] [stderr]     Checking sharded-slab v0.1.4
[INFO] [stderr]    Compiling cexpr v0.4.0
[INFO] [stderr]    Compiling chrono-tz v0.6.1
[INFO] [stderr]     Checking clap_lex v0.2.0
[INFO] [stderr]     Checking humansize v1.1.1
[INFO] [stderr]     Checking unic-segment v0.9.0
[INFO] [stderr]     Checking textwrap v0.15.0
[INFO] [stderr]    Compiling thiserror-impl v1.0.30
[INFO] [stderr]    Compiling tokio-macros v1.7.0
[INFO] [stderr]    Compiling futures-macro v0.3.21
[INFO] [stderr]    Compiling pest_derive v2.1.0
[INFO] [stderr]    Compiling pin-project-internal v1.0.10
[INFO] [stderr]    Compiling time-macros-impl v0.1.2
[INFO] [stderr]    Compiling tracing-attributes v0.1.20
[INFO] [stderr]    Compiling validator_derive v0.14.0
[INFO] [stderr]    Compiling async_static v0.1.3
[INFO] [stderr]    Compiling darling_macro v0.13.4
[INFO] [stderr]     Checking quick-xml v0.19.0
[INFO] [stderr]     Checking time-macros v0.1.1
[INFO] [stderr]     Checking codepage v0.1.1
[INFO] [stderr]    Compiling async-stream-impl v0.3.3
[INFO] [stderr]    Compiling clap_derive v3.1.18
[INFO] [stderr]     Checking futures-util v0.3.21
[INFO] [stderr]     Checking redis v0.21.5
[INFO] [stderr]    Compiling darling v0.13.4
[INFO] [stderr]     Checking pin-project v1.0.10
[INFO] [stderr]     Checking thiserror v1.0.30
[INFO] [stderr]     Checking flume v0.10.12
[INFO] [stderr]     Checking simple_asn1 v0.6.1
[INFO] [stderr]     Checking zip v0.5.13
[INFO] [stderr]    Compiling crab-excel-derive v0.1.0 (/opt/rustwide/workdir/crab-excel-derive)
[INFO] [stderr]     Checking async-stream v0.3.3
[INFO] [stderr]     Checking tracing v0.1.34
[INFO] [stderr]     Checking simple_excel_writer v0.1.9
[INFO] [stderr]     Checking clap v3.1.18
[INFO] [stderr]     Checking simple_redis v0.6.1
[INFO] [stderr]     Checking futures-executor v0.3.21
[INFO] [stderr]     Checking futures v0.3.21
[INFO] [stderr]     Checking chrono v0.4.19
[INFO] [stderr]     Checking either v1.6.1
[INFO] [stderr]     Checking uuid v0.8.2
[INFO] [stderr]     Checking serde_bytes v0.11.5
[INFO] [stderr]     Checking bigdecimal v0.2.2
[INFO] [stderr]     Checking ipnetwork v0.17.0
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking toml v0.5.9
[INFO] [stderr]     Checking itertools v0.10.3
[INFO] [stderr]     Checking mio v0.8.2
[INFO] [stderr]     Checking rustls v0.19.1
[INFO] [stderr]     Checking want v0.3.0
[INFO] [stderr]     Checking globset v0.4.8
[INFO] [stderr]     Checking tracing-log v0.1.3
[INFO] [stderr]     Checking calamine v0.18.0
[INFO] [stderr]     Checking tracing-subscriber v0.3.11
[INFO] [stderr]     Checking ignore v0.4.18
[INFO] [stderr]     Checking tokio v1.17.0
[INFO] [stderr]    Compiling env_logger v0.8.4
[INFO] [stderr]     Checking rbson v2.0.3
[INFO] [stderr]     Checking jsonwebtoken v8.1.0
[INFO] [stderr]     Checking validator v0.14.0
[INFO] [stderr]     Checking fast_log v1.5.1
[INFO] [stderr]     Checking globwalk v0.8.1
[INFO] [stderr]    Compiling proc-macro-crate v1.1.3
[INFO] [stderr]    Compiling html_parser v0.6.3
[INFO] [stderr]     Checking sqlformat v0.1.8
[INFO] [stderr]    Compiling poem-derive v1.3.29
[INFO] [stderr]    Compiling rbatis_sql_macro v3.0.15
[INFO] [stderr]    Compiling rbatis-macro-driver v3.1.1
[INFO] [stderr]     Checking rbatis_sql v3.0.23
[INFO] [stderr]     Checking tera v1.15.0
[INFO] [stderr]     Checking tokio-stream v0.1.8
[INFO] [stderr]     Checking tokio-rustls v0.22.0
[INFO] [stderr]     Checking tokio-util v0.7.1
[INFO] [stderr]     Checking sqlx-rt v0.5.13
[INFO] [stderr]     Checking sqlx-core v0.5.13
[INFO] [stderr]     Checking tokio-test v0.4.2
[INFO] [stderr]     Checking h2 v0.3.13
[INFO] [stderr]    Compiling libxlsxwriter-sys v1.1.1
[INFO] [stderr]     Checking hyper v0.14.18
[INFO] [stderr]     Checking rbatis-core v3.1.7
[INFO] [stderr]     Checking poem v1.3.29
[INFO] [stderr]     Checking rbatis v3.1.6
[INFO] [stderr]     Checking crab-lib v0.1.0 (/opt/rustwide/workdir/crab-lib)
[INFO] [stderr]     Checking generator v0.2.0 (/opt/rustwide/workdir/generator)
[INFO] [stderr]     Checking crab-config v0.1.0 (/opt/rustwide/workdir/crab-config)
[INFO] [stdout] ............gen macro py_sql :
[INFO] [stdout]  pub async fn tables(table_names : & str) -> rbatis :: core :: Result < Vec <
[INFO] [stdout] Table > >
[INFO] [stdout] {
[INFO] [stdout]     let mut sql =
[INFO] [stdout]     "
[INFO] [stdout]     SELECT
[INFO] [stdout]         TABLE_CATALOG,
[INFO] [stdout]         TABLE_SCHEMA,
[INFO] [stdout]         TABLE_NAME,
[INFO] [stdout]         TABLE_TYPE,
[INFO] [stdout]         `ENGINE`,
[INFO] [stdout]         VERSION,
[INFO] [stdout]         ROW_FORMAT,
[INFO] [stdout]         TABLE_ROWS,
[INFO] [stdout]         AVG_ROW_LENGTH,
[INFO] [stdout]         DATA_LENGTH,
[INFO] [stdout]         MAX_DATA_LENGTH,
[INFO] [stdout]         INDEX_LENGTH,
[INFO] [stdout]         DATA_FREE,
[INFO] [stdout]         AUTO_INCREMENT,
[INFO] [stdout]         CREATE_TIME,
[INFO] [stdout]         UPDATE_TIME,
[INFO] [stdout]         CHECK_TIME,
[INFO] [stdout]         TABLE_COLLATION,
[INFO] [stdout]         `CHECKSUM`,
[INFO] [stdout]         CREATE_OPTIONS,
[INFO] [stdout]         TABLE_COMMENT
[INFO] [stdout]     FROM
[INFO] [stdout]         information_schema.`TABLES`
[INFO] [stdout]     WHERE
[INFO] [stdout]         TABLE_SCHEMA = (
[INFO] [stdout]         SELECT
[INFO] [stdout]             DATABASE ())
[INFO] [stdout]     if table_names != '':
[INFO] [stdout]         AND FIND_IN_SET(TABLE_NAME, #{table_names})
[INFO] [stdout]     ORDER BY
[INFO] [stdout]         CREATE_TIME;
[INFO] [stdout]     ".to_string()
[INFO] [stdout]     ; let mut rb_arg_map = rbson :: Document :: new() ;
[INFO] [stdout]     rb_arg_map.insert("table_names".to_string(), rbson ::
[INFO] [stdout]     to_bson(table_names).unwrap_or_default()) ; {} use rbatis :: executor ::
[INFO] [stdout]     { RbatisRef } ; let driver_type = RB.get_rbatis().driver_type() ? ; use
[INFO] [stdout]     rbatis :: { rbatis_sql, AsSqlTag } ; let sql_tag = driver_type.sql_tag() ;
[INFO] [stdout]     #[rb_py("
[INFO] [stdout]     SELECT
[INFO] [stdout]         TABLE_CATALOG,
[INFO] [stdout]         TABLE_SCHEMA,
[INFO] [stdout]         TABLE_NAME,
[INFO] [stdout]         TABLE_TYPE,
[INFO] [stdout]         `ENGINE`,
[INFO] [stdout]         VERSION,
[INFO] [stdout]         ROW_FORMAT,
[INFO] [stdout]         TABLE_ROWS,
[INFO] [stdout]         AVG_ROW_LENGTH,
[INFO] [stdout]         DATA_LENGTH,
[INFO] [stdout]         MAX_DATA_LENGTH,
[INFO] [stdout]         INDEX_LENGTH,
[INFO] [stdout]         DATA_FREE,
[INFO] [stdout]         AUTO_INCREMENT,
[INFO] [stdout]         CREATE_TIME,
[INFO] [stdout]         UPDATE_TIME,
[INFO] [stdout]         CHECK_TIME,
[INFO] [stdout]         TABLE_COLLATION,
[INFO] [stdout]         `CHECKSUM`,
[INFO] [stdout]         CREATE_OPTIONS,
[INFO] [stdout]         TABLE_COMMENT
[INFO] [stdout]     FROM
[INFO] [stdout]         information_schema.`TABLES`
[INFO] [stdout]     WHERE
[INFO] [stdout]         TABLE_SCHEMA = (
[INFO] [stdout]         SELECT
[INFO] [stdout]             DATABASE ())
[INFO] [stdout]     if table_names != '':
[INFO] [stdout]         AND FIND_IN_SET(TABLE_NAME, #{table_names})
[INFO] [stdout]     ORDER BY
[INFO] [stdout]         CREATE_TIME;
[INFO] [stdout]     ")]
[INFO] [stdout]     pub fn tables(arg : & rbson :: Bson, _tag : char) {} let(mut sql, rb_args)
[INFO] [stdout]     = tables(& rbson :: Bson :: Document(rb_arg_map), sql_tag) ;
[INFO] [stdout]     driver_type.do_replace_tag(& mut sql) ; use rbatis :: executor ::
[INFO] [stdout]     { Executor, ExecutorMut } ; RB.fetch(& sql, rb_args).await
[INFO] [stdout] }
[INFO] [stdout] ............gen macro py_sql end............
[INFO] [stdout] py_sql:
[INFO] [stdout]     SELECT
[INFO] [stdout]         TABLE_CATALOG,
[INFO] [stdout]         TABLE_SCHEMA,
[INFO] [stdout]         TABLE_NAME,
[INFO] [stdout]         TABLE_TYPE,
[INFO] [stdout]         `ENGINE`,
[INFO] [stdout]         VERSION,
[INFO] [stdout]         ROW_FORMAT,
[INFO] [stdout]         TABLE_ROWS,
[INFO] [stdout]         AVG_ROW_LENGTH,
[INFO] [stdout]         DATA_LENGTH,
[INFO] [stdout]         MAX_DATA_LENGTH,
[INFO] [stdout]         INDEX_LENGTH,
[INFO] [stdout]         DATA_FREE,
[INFO] [stdout]         AUTO_INCREMENT,
[INFO] [stdout]         CREATE_TIME,
[INFO] [stdout]         UPDATE_TIME,
[INFO] [stdout]         CHECK_TIME,
[INFO] [stdout]         TABLE_COLLATION,
[INFO] [stdout]         `CHECKSUM`,
[INFO] [stdout]         CREATE_OPTIONS,
[INFO] [stdout]         TABLE_COMMENT
[INFO] [stdout]     FROM
[INFO] [stdout]         information_schema.`TABLES`
[INFO] [stdout]     WHERE
[INFO] [stdout]         TABLE_SCHEMA = (
[INFO] [stdout]         SELECT
[INFO] [stdout]             DATABASE ())
[INFO] [stdout]     if table_names != '':
[INFO] [stdout]         AND FIND_IN_SET(TABLE_NAME, #{table_names})
[INFO] [stdout]     ORDER BY
[INFO] [stdout]         CREATE_TIME;
[INFO] [stdout]     
[INFO] [stdout] html:<mapper><update id="tables"> SELECT TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, TABLE_TYPE, `ENGINE`, VERSION, ROW_FORMAT, TABLE_ROWS, AVG_ROW_LENGTH, DATA_LENGTH, MAX_DATA_LENGTH, INDEX_LENGTH, DATA_FREE, AUTO_INCREMENT, CREATE_TIME, UPDATE_TIME, CHECK_TIME, TABLE_COLLATION, `CHECKSUM`, CREATE_OPTIONS, TABLE_COMMENT FROM information_schema.`TABLES` WHERE TABLE_SCHEMA = ( SELECT DATABASE ())<if test="table_names != ''"> AND FIND_IN_SET(TABLE_NAME, #{table_names})</if> ORDER BY CREATE_TIME; </update></mapper>
[INFO] [stdout] load html:[
[INFO] [stdout]      {
[INFO] [stdout]         tag: "update",
[INFO] [stdout]         attributes: {
[INFO] [stdout]             "id": "tables",
[INFO] [stdout]         },
[INFO] [stdout]         childs: [
[INFO] [stdout]              {
[INFO] [stdout]                 data: "SELECT TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, TABLE_TYPE, `ENGINE`, VERSION, ROW_FORMAT, TABLE_ROWS, AVG_ROW_LENGTH, DATA_LENGTH, MAX_DATA_LENGTH, INDEX_LENGTH, DATA_FREE, AUTO_INCREMENT, CREATE_TIME, UPDATE_TIME, CHECK_TIME, TABLE_COLLATION, `CHECKSUM`, CREATE_OPTIONS, TABLE_COMMENT FROM information_schema.`TABLES` WHERE TABLE_SCHEMA = ( SELECT DATABASE ())",
[INFO] [stdout]             },
[INFO] [stdout]              {
[INFO] [stdout]                 tag: "if",
[INFO] [stdout]                 attributes: {
[INFO] [stdout]                     "test": "table_names != ''",
[INFO] [stdout]                 },
[INFO] [stdout]                 childs: [
[INFO] [stdout]                      {
[INFO] [stdout]                         data: "AND FIND_IN_SET(TABLE_NAME, #{table_names})",
[INFO] [stdout]                     },
[INFO] [stdout]                 ],
[INFO] [stdout]             },
[INFO] [stdout]              {
[INFO] [stdout]                 data: "ORDER BY CREATE_TIME;",
[INFO] [stdout]             },
[INFO] [stdout]         ],
[INFO] [stdout]     },
[INFO] [stdout] ]
[INFO] [stdout] ............gen rb_pysql_fn:
[INFO] [stdout]  use rbatis_sql :: ops :: * ; pub fn tables(arg : & rbson :: Bson, _tag : char)
[INFO] [stdout] -> (String, Vec < rbson :: Bson >)
[INFO] [stdout] {
[INFO] [stdout]     use rbatis_sql :: ops :: AsProxy ; let mut sql = String ::
[INFO] [stdout]     with_capacity(1000) ; let mut args = Vec :: with_capacity(20) ;
[INFO] [stdout]     sql.push_str("SELECT TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, TABLE_TYPE, `ENGINE`, VERSION, ROW_FORMAT, TABLE_ROWS, AVG_ROW_LENGTH, DATA_LENGTH, MAX_DATA_LENGTH, INDEX_LENGTH, DATA_FREE, AUTO_INCREMENT, CREATE_TIME, UPDATE_TIME, CHECK_TIME, TABLE_COLLATION, `CHECKSUM`, CREATE_OPTIONS, TABLE_COMMENT FROM information_schema.`TABLES` WHERE TABLE_SCHEMA = ( SELECT DATABASE ())")
[INFO] [stdout]     ; let dGFibGVfbmFtZXMgIT0gJyc_ =
[INFO] [stdout]     { let result = { (arg.index("table_names")).op_ne(& "") } ; result } ; if
[INFO] [stdout]     dGFibGVfbmFtZXMgIT0gJyc_
[INFO] [stdout]     {
[INFO] [stdout]         sql.push_str(" ") ; let c2VsZWN0OnRhYmxlX25hbWVz =
[INFO] [stdout]         { let result = { arg.index("table_names") } ; result } ;
[INFO] [stdout]         args.push(rbson :: bson! (c2VsZWN0OnRhYmxlX25hbWVz)) ;
[INFO] [stdout]         sql.push_str("AND FIND_IN_SET(TABLE_NAME, ?)") ;
[INFO] [stdout]     } sql.push_str("ORDER BY CREATE_TIME;") ; rbatis_sql :: sql_index!
[INFO] [stdout]     (sql, _tag) ; return(sql, args) ;
[INFO] [stdout] }
[INFO] [stdout] ............gen rb_pysql_fn end............
[INFO] [stdout] ............gen macro py_sql :
[INFO] [stdout]  pub async fn columns(table_names : & str) -> rbatis :: core :: Result < Vec <
[INFO] [stdout] TableColumn > >
[INFO] [stdout] {
[INFO] [stdout]     let mut sql =
[INFO] [stdout]     "
[INFO] [stdout]     SELECT
[INFO] [stdout]         TABLE_CATALOG,
[INFO] [stdout]         TABLE_SCHEMA,
[INFO] [stdout]         TABLE_NAME,
[INFO] [stdout]         COLUMN_NAME,
[INFO] [stdout]         ORDINAL_POSITION,
[INFO] [stdout]         COLUMN_DEFAULT,
[INFO] [stdout]         IS_NULLABLE,
[INFO] [stdout]         DATA_TYPE,
[INFO] [stdout]         CHARACTER_MAXIMUM_LENGTH,
[INFO] [stdout]         CHARACTER_OCTET_LENGTH,
[INFO] [stdout]         NUMERIC_PRECISION,
[INFO] [stdout]         NUMERIC_SCALE,
[INFO] [stdout]         DATETIME_PRECISION,
[INFO] [stdout]         CHARACTER_SET_NAME,
[INFO] [stdout]         COLLATION_NAME,
[INFO] [stdout]         COLUMN_TYPE,
[INFO] [stdout]         COLUMN_KEY,
[INFO] [stdout]         EXTRA,
[INFO] [stdout]         `PRIVILEGES`,
[INFO] [stdout]         COLUMN_COMMENT,
[INFO] [stdout]         GENERATION_EXPRESSION,
[INFO] [stdout]         SRS_ID
[INFO] [stdout]     FROM
[INFO] [stdout]         information_schema.COLUMNS
[INFO] [stdout]     WHERE
[INFO] [stdout]         TABLE_SCHEMA = (
[INFO] [stdout]         SELECT
[INFO] [stdout]             DATABASE ())
[INFO] [stdout]     if table_names != '':
[INFO] [stdout]         AND FIND_IN_SET(TABLE_NAME, #{table_names})
[INFO] [stdout]     ORDER BY
[INFO] [stdout]         ORDINAL_POSITION;
[INFO] [stdout]     ".to_string()
[INFO] [stdout]     ; let mut rb_arg_map = rbson :: Document :: new() ;
[INFO] [stdout]     rb_arg_map.insert("table_names".to_string(), rbson ::
[INFO] [stdout]     to_bson(table_names).unwrap_or_default()) ; {} use rbatis :: executor ::
[INFO] [stdout]     { RbatisRef } ; let driver_type = RB.get_rbatis().driver_type() ? ; use
[INFO] [stdout]     rbatis :: { rbatis_sql, AsSqlTag } ; let sql_tag = driver_type.sql_tag() ;
[INFO] [stdout]     #[rb_py("
[INFO] [stdout]     SELECT
[INFO] [stdout]         TABLE_CATALOG,
[INFO] [stdout]         TABLE_SCHEMA,
[INFO] [stdout]         TABLE_NAME,
[INFO] [stdout]         COLUMN_NAME,
[INFO] [stdout]         ORDINAL_POSITION,
[INFO] [stdout]         COLUMN_DEFAULT,
[INFO] [stdout]         IS_NULLABLE,
[INFO] [stdout]         DATA_TYPE,
[INFO] [stdout]         CHARACTER_MAXIMUM_LENGTH,
[INFO] [stdout]         CHARACTER_OCTET_LENGTH,
[INFO] [stdout]         NUMERIC_PRECISION,
[INFO] [stdout]         NUMERIC_SCALE,
[INFO] [stdout]         DATETIME_PRECISION,
[INFO] [stdout]         CHARACTER_SET_NAME,
[INFO] [stdout]         COLLATION_NAME,
[INFO] [stdout]         COLUMN_TYPE,
[INFO] [stdout]         COLUMN_KEY,
[INFO] [stdout]         EXTRA,
[INFO] [stdout]         `PRIVILEGES`,
[INFO] [stdout]         COLUMN_COMMENT,
[INFO] [stdout]         GENERATION_EXPRESSION,
[INFO] [stdout]         SRS_ID
[INFO] [stdout]     FROM
[INFO] [stdout]         information_schema.COLUMNS
[INFO] [stdout]     WHERE
[INFO] [stdout]         TABLE_SCHEMA = (
[INFO] [stdout]         SELECT
[INFO] [stdout]             DATABASE ())
[INFO] [stdout]     if table_names != '':
[INFO] [stdout]         AND FIND_IN_SET(TABLE_NAME, #{table_names})
[INFO] [stdout]     ORDER BY
[INFO] [stdout]         ORDINAL_POSITION;
[INFO] [stdout]     ")]
[INFO] [stdout]     pub fn columns(arg : & rbson :: Bson, _tag : char) {}
[INFO] [stdout]     let(mut sql, rb_args) =
[INFO] [stdout]     columns(& rbson :: Bson :: Document(rb_arg_map), sql_tag) ;
[INFO] [stdout]     driver_type.do_replace_tag(& mut sql) ; use rbatis :: executor ::
[INFO] [stdout]     { Executor, ExecutorMut } ; RB.fetch(& sql, rb_args).await
[INFO] [stdout] }
[INFO] [stdout] ............gen macro py_sql end............
[INFO] [stdout] ............gen macro py_sql :
[INFO] [stdout]  pub async fn tables(table_names : & str) -> rbatis :: core :: Result < Vec <
[INFO] [stdout] Table > >
[INFO] [stdout] {
[INFO] [stdout]     let mut sql =
[INFO] [stdout]     "
[INFO] [stdout]     SELECT
[INFO] [stdout]         TABLE_CATALOG,
[INFO] [stdout]         TABLE_SCHEMA,
[INFO] [stdout]         TABLE_NAME,
[INFO] [stdout]         TABLE_TYPE,
[INFO] [stdout]         `ENGINE`,
[INFO] [stdout]         VERSION,
[INFO] [stdout]         ROW_FORMAT,
[INFO] [stdout]         TABLE_ROWS,
[INFO] [stdout]         AVG_ROW_LENGTH,
[INFO] [stdout]         DATA_LENGTH,
[INFO] [stdout]         MAX_DATA_LENGTH,
[INFO] [stdout]         INDEX_LENGTH,
[INFO] [stdout]         DATA_FREE,
[INFO] [stdout]         AUTO_INCREMENT,
[INFO] [stdout]         CREATE_TIME,
[INFO] [stdout]         UPDATE_TIME,
[INFO] [stdout]         CHECK_TIME,
[INFO] [stdout]         TABLE_COLLATION,
[INFO] [stdout]         `CHECKSUM`,
[INFO] [stdout]         CREATE_OPTIONS,
[INFO] [stdout]         TABLE_COMMENT
[INFO] [stdout]     FROM
[INFO] [stdout]         information_schema.`TABLES`
[INFO] [stdout]     WHERE
[INFO] [stdout]         TABLE_SCHEMA = (
[INFO] [stdout]         SELECT
[INFO] [stdout]             DATABASE ())
[INFO] [stdout]     if table_names != '':
[INFO] [stdout] py_sql:
[INFO] [stdout]     SELECT
[INFO] [stdout]         TABLE_CATALOG,
[INFO] [stdout]         TABLE_SCHEMA,
[INFO] [stdout]         TABLE_NAME,
[INFO] [stdout]         COLUMN_NAME,
[INFO] [stdout]         ORDINAL_POSITION,
[INFO] [stdout]         COLUMN_DEFAULT,
[INFO] [stdout]         IS_NULLABLE,
[INFO] [stdout]         DATA_TYPE,
[INFO] [stdout]         CHARACTER_MAXIMUM_LENGTH,
[INFO] [stdout]         CHARACTER_OCTET_LENGTH,
[INFO] [stdout]         NUMERIC_PRECISION,
[INFO] [stdout]         NUMERIC_SCALE,
[INFO] [stdout]         DATETIME_PRECISION,
[INFO] [stdout]         CHARACTER_SET_NAME,
[INFO] [stdout]         COLLATION_NAME,
[INFO] [stdout]         COLUMN_TYPE,
[INFO] [stdout]         COLUMN_KEY,
[INFO] [stdout]         EXTRA,
[INFO] [stdout]         `PRIVILEGES`,
[INFO] [stdout]         AND FIND_IN_SET(TABLE_NAME, #{table_names})
[INFO] [stdout]         COLUMN_COMMENT,
[INFO] [stdout]         GENERATION_EXPRESSION,
[INFO] [stdout]         SRS_ID
[INFO] [stdout]     FROM
[INFO] [stdout]     ORDER BY
[INFO] [stdout]         information_schema.COLUMNS
[INFO] [stdout]     WHERE
[INFO] [stdout]         CREATE_TIME;
[INFO] [stdout]         TABLE_SCHEMA = (
[INFO] [stdout]     ".to_string()
[INFO] [stdout]         SELECT
[INFO] [stdout]             DATABASE ())
[INFO] [stdout]     ; let mut rb_arg_map = rbson :: Document :: new() ;
[INFO] [stdout]     if table_names != '':
[INFO] [stdout]     rb_arg_map.insert("table_names".to_string(), rbson ::
[INFO] [stdout]         AND FIND_IN_SET(TABLE_NAME, #{table_names})
[INFO] [stdout]     ORDER BY
[INFO] [stdout]     to_bson(table_names).unwrap_or_default()) ; {} use rbatis :: executor ::
[INFO] [stdout]     { RbatisRef } ; let driver_type = RB.get_rbatis().driver_type() ? ; use
[INFO] [stdout]         ORDINAL_POSITION;
[INFO] [stdout]     rbatis :: { rbatis_sql, AsSqlTag } ; let sql_tag = driver_type.sql_tag() ;
[INFO] [stdout]     #[rb_py("
[INFO] [stdout]     SELECT
[INFO] [stdout]         TABLE_CATALOG,
[INFO] [stdout]         TABLE_SCHEMA,
[INFO] [stdout]         TABLE_NAME,
[INFO] [stdout]         TABLE_TYPE,
[INFO] [stdout]         `ENGINE`,
[INFO] [stdout]         VERSION,
[INFO] [stdout]         ROW_FORMAT,
[INFO] [stdout]         TABLE_ROWS,
[INFO] [stdout]         AVG_ROW_LENGTH,
[INFO] [stdout]         DATA_LENGTH,
[INFO] [stdout]         MAX_DATA_LENGTH,
[INFO] [stdout]         INDEX_LENGTH,
[INFO] [stdout]         DATA_FREE,
[INFO] [stdout]         AUTO_INCREMENT,
[INFO] [stdout]         CREATE_TIME,
[INFO] [stdout]         UPDATE_TIME,
[INFO] [stdout]         CHECK_TIME,
[INFO] [stdout]         TABLE_COLLATION,
[INFO] [stdout]         `CHECKSUM`,
[INFO] [stdout]         CREATE_OPTIONS,
[INFO] [stdout]         TABLE_COMMENT
[INFO] [stdout]     FROM
[INFO] [stdout]         information_schema.`TABLES`
[INFO] [stdout]     WHERE
[INFO] [stdout]         TABLE_SCHEMA = (
[INFO] [stdout]         SELECT
[INFO] [stdout]             DATABASE ())
[INFO] [stdout]     if table_names != '':
[INFO] [stdout]         AND FIND_IN_SET(TABLE_NAME, #{table_names})
[INFO] [stdout]     ORDER BY
[INFO] [stdout]         CREATE_TIME;
[INFO] [stdout]     ")]
[INFO] [stdout]     pub fn tables(arg : & rbson :: Bson, _tag : char) {} let(mut sql, rb_args)
[INFO] [stdout]     = tables(& rbson :: Bson :: Document(rb_arg_map), sql_tag) ;
[INFO] [stdout]     driver_type.do_replace_tag(& mut sql) ; use rbatis :: executor ::
[INFO] [stdout]     { Executor, ExecutorMut } ; RB.fetch(& sql, rb_args).await
[INFO] [stdout] }
[INFO] [stdout] ............gen macro py_sql end............
[INFO] [stdout]     
[INFO] [stdout] html:<mapper><update id="columns"> SELECT TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, ORDINAL_POSITION, COLUMN_DEFAULT, IS_NULLABLE, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH, CHARACTER_OCTET_LENGTH, NUMERIC_PRECISION, NUMERIC_SCALE, DATETIME_PRECISION, CHARACTER_SET_NAME, COLLATION_NAME, COLUMN_TYPE, COLUMN_KEY, EXTRA, `PRIVILEGES`, COLUMN_COMMENT, GENERATION_EXPRESSION, SRS_ID FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = ( SELECT DATABASE ())<if test="table_names != ''"> AND FIND_IN_SET(TABLE_NAME, #{table_names})</if> ORDER BY ORDINAL_POSITION; </update></mapper>
[INFO] [stdout] py_sql:
[INFO] [stdout]     SELECT
[INFO] [stdout]         TABLE_CATALOG,
[INFO] [stdout]         TABLE_SCHEMA,
[INFO] [stdout]         TABLE_NAME,
[INFO] [stdout]         TABLE_TYPE,
[INFO] [stdout]         `ENGINE`,
[INFO] [stdout]         VERSION,
[INFO] [stdout]         ROW_FORMAT,
[INFO] [stdout]         TABLE_ROWS,
[INFO] [stdout]         AVG_ROW_LENGTH,
[INFO] [stdout]         DATA_LENGTH,
[INFO] [stdout]         MAX_DATA_LENGTH,
[INFO] [stdout]         INDEX_LENGTH,
[INFO] [stdout]         DATA_FREE,
[INFO] [stdout]         AUTO_INCREMENT,
[INFO] [stdout]         CREATE_TIME,
[INFO] [stdout]         UPDATE_TIME,
[INFO] [stdout]         CHECK_TIME,
[INFO] [stdout]         TABLE_COLLATION,
[INFO] [stdout]         `CHECKSUM`,
[INFO] [stdout]         CREATE_OPTIONS,
[INFO] [stdout]         TABLE_COMMENT
[INFO] [stdout]     FROM
[INFO] [stdout]         information_schema.`TABLES`
[INFO] [stdout]     WHERE
[INFO] [stdout]         TABLE_SCHEMA = (
[INFO] [stdout]         SELECT
[INFO] [stdout]             DATABASE ())
[INFO] [stdout]     if table_names != '':
[INFO] [stdout]         AND FIND_IN_SET(TABLE_NAME, #{table_names})
[INFO] [stdout]     ORDER BY
[INFO] [stdout]         CREATE_TIME;
[INFO] [stdout]     
[INFO] [stdout] html:<mapper><update id="tables"> SELECT TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, TABLE_TYPE, `ENGINE`, VERSION, ROW_FORMAT, TABLE_ROWS, AVG_ROW_LENGTH, DATA_LENGTH, MAX_DATA_LENGTH, INDEX_LENGTH, DATA_FREE, AUTO_INCREMENT, CREATE_TIME, UPDATE_TIME, CHECK_TIME, TABLE_COLLATION, `CHECKSUM`, CREATE_OPTIONS, TABLE_COMMENT FROM information_schema.`TABLES` WHERE TABLE_SCHEMA = ( SELECT DATABASE ())<if test="table_names != ''"> AND FIND_IN_SET(TABLE_NAME, #{table_names})</if> ORDER BY CREATE_TIME; </update></mapper>
[INFO] [stdout] load html:[
[INFO] [stdout]      {
[INFO] [stdout]         tag: "update",
[INFO] [stdout]         attributes: {
[INFO] [stdout]             "id": "columns",
[INFO] [stdout]         },
[INFO] [stdout]         childs: [
[INFO] [stdout]              {
[INFO] [stdout]                 data: "SELECT TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, ORDINAL_POSITION, COLUMN_DEFAULT, IS_NULLABLE, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH, CHARACTER_OCTET_LENGTH, NUMERIC_PRECISION, NUMERIC_SCALE, DATETIME_PRECISION, CHARACTER_SET_NAME, COLLATION_NAME, COLUMN_TYPE, COLUMN_KEY, EXTRA, `PRIVILEGES`, COLUMN_COMMENT, GENERATION_EXPRESSION, SRS_ID FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = ( SELECT DATABASE ())",
[INFO] [stdout]             },
[INFO] [stdout]              {
[INFO] [stdout]                 tag: "if",
[INFO] [stdout]                 attributes: {
[INFO] [stdout]                     "test": "table_names != ''",
[INFO] [stdout]                 },
[INFO] [stdout]                 childs: [
[INFO] [stdout]                      {
[INFO] [stdout]                         data: "AND FIND_IN_SET(TABLE_NAME, #{table_names})",
[INFO] [stdout]                     },
[INFO] [stdout]                 ],
[INFO] [stdout]             },
[INFO] [stdout]              {
[INFO] [stdout]                 data: "ORDER BY ORDINAL_POSITION;",
[INFO] [stdout]             },
[INFO] [stdout]         ],
[INFO] [stdout]     },
[INFO] [stdout] ]
[INFO] [stdout] load html:[
[INFO] [stdout]      {
[INFO] [stdout]         tag: "update",
[INFO] [stdout]         attributes: {
[INFO] [stdout]             "id": "tables",
[INFO] [stdout]         },
[INFO] [stdout]         childs: [
[INFO] [stdout]              {
[INFO] [stdout]                 data: "SELECT TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, TABLE_TYPE, `ENGINE`, VERSION, ROW_FORMAT, TABLE_ROWS, AVG_ROW_LENGTH, DATA_LENGTH, MAX_DATA_LENGTH, INDEX_LENGTH, DATA_FREE, AUTO_INCREMENT, CREATE_TIME, UPDATE_TIME, CHECK_TIME, TABLE_COLLATION, `CHECKSUM`, CREATE_OPTIONS, TABLE_COMMENT FROM information_schema.`TABLES` WHERE TABLE_SCHEMA = ( SELECT DATABASE ())",
[INFO] [stdout]             },
[INFO] [stdout]              {
[INFO] [stdout]                 tag: "if",
[INFO] [stdout]                 attributes: {
[INFO] [stdout]                     "test": "table_names != ''",
[INFO] [stdout]                 },
[INFO] [stdout]                 childs: [
[INFO] [stdout]                      {
[INFO] [stdout]                         data: "AND FIND_IN_SET(TABLE_NAME, #{table_names})",
[INFO] [stdout]                     },
[INFO] [stdout]                 ],
[INFO] [stdout]             },
[INFO] [stdout]              {
[INFO] [stdout]                 data: "ORDER BY CREATE_TIME;",
[INFO] [stdout]             },
[INFO] [stdout]         ],
[INFO] [stdout]     },
[INFO] [stdout] ]
[INFO] [stdout] ............gen rb_pysql_fn:
[INFO] [stdout]  use rbatis_sql :: ops :: * ; pub fn
[INFO] [stdout] columns(arg : & rbson :: Bson, _tag : char) -> (String, Vec < rbson :: Bson >)
[INFO] [stdout] {
[INFO] [stdout]     use rbatis_sql :: ops :: AsProxy ; let mut sql = String ::
[INFO] [stdout]     with_capacity(1000) ; let mut args = Vec :: with_capacity(20) ;
[INFO] [stdout]     sql.push_str("SELECT TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, ORDINAL_POSITION, COLUMN_DEFAULT, IS_NULLABLE, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH, CHARACTER_OCTET_LENGTH, NUMERIC_PRECISION, NUMERIC_SCALE, DATETIME_PRECISION, CHARACTER_SET_NAME, COLLATION_NAME, COLUMN_TYPE, COLUMN_KEY, EXTRA, `PRIVILEGES`, COLUMN_COMMENT, GENERATION_EXPRESSION, SRS_ID FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = ( SELECT DATABASE ())")
[INFO] [stdout]     ; let dGFibGVfbmFtZXMgIT0gJyc_ =
[INFO] [stdout]     { let result = { (arg.index("table_names")).op_ne(& "") } ; result } ; if
[INFO] [stdout]     dGFibGVfbmFtZXMgIT0gJyc_
[INFO] [stdout]     {
[INFO] [stdout]         sql.push_str(" ") ; let c2VsZWN0OnRhYmxlX25hbWVz =
[INFO] [stdout]         { let result = { arg.index("table_names") } ; result } ;
[INFO] [stdout]         args.push(rbson :: bson! (c2VsZWN0OnRhYmxlX25hbWVz)) ;
[INFO] [stdout]         sql.push_str("AND FIND_IN_SET(TABLE_NAME, ?)") ;
[INFO] [stdout]     } sql.push_str("ORDER BY ORDINAL_POSITION;") ; rbatis_sql :: sql_index!
[INFO] [stdout]     (sql, _tag) ; return(sql, args) ;
[INFO] [stdout] }
[INFO] [stdout] ............gen rb_pysql_fn end............
[INFO] [stdout] ............gen rb_pysql_fn:
[INFO] [stdout]  use rbatis_sql :: ops :: * ; pub fn tables(arg : & rbson :: Bson, _tag : char)
[INFO] [stdout] -> (String, Vec < rbson :: Bson >)
[INFO] [stdout] {
[INFO] [stdout]     use rbatis_sql :: ops :: AsProxy ; let mut sql = String ::
[INFO] [stdout]     with_capacity(1000) ; let mut args = Vec :: with_capacity(20) ;
[INFO] [stdout]     sql.push_str("SELECT TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, TABLE_TYPE, `ENGINE`, VERSION, ROW_FORMAT, TABLE_ROWS, AVG_ROW_LENGTH, DATA_LENGTH, MAX_DATA_LENGTH, INDEX_LENGTH, DATA_FREE, AUTO_INCREMENT, CREATE_TIME, UPDATE_TIME, CHECK_TIME, TABLE_COLLATION, `CHECKSUM`, CREATE_OPTIONS, TABLE_COMMENT FROM information_schema.`TABLES` WHERE TABLE_SCHEMA = ( SELECT DATABASE ())")
[INFO] [stdout]     ; let dGFibGVfbmFtZXMgIT0gJyc_ =
[INFO] [stdout]     { let result = { (arg.index("table_names")).op_ne(& "") } ; result } ; if
[INFO] [stdout]     dGFibGVfbmFtZXMgIT0gJyc_
[INFO] [stdout]     {
[INFO] [stdout]         sql.push_str(" ") ; let c2VsZWN0OnRhYmxlX25hbWVz =
[INFO] [stdout]         { let result = { arg.index("table_names") } ; result } ;
[INFO] [stdout]         args.push(rbson :: bson! (c2VsZWN0OnRhYmxlX25hbWVz)) ;
[INFO] [stdout]         sql.push_str("AND FIND_IN_SET(TABLE_NAME, ?)") ;
[INFO] [stdout]     } sql.push_str("ORDER BY CREATE_TIME;") ; rbatis_sql :: sql_index!
[INFO] [stdout]     (sql, _tag) ; return(sql, args) ;
[INFO] [stdout] }
[INFO] [stdout] ............gen rb_pysql_fn end............
[INFO] [stdout] ............gen macro py_sql :
[INFO] [stdout]  pub async fn columns(table_names : & str) -> rbatis :: core :: Result < Vec <
[INFO] [stdout] TableColumn > >
[INFO] [stdout] {
[INFO] [stdout]     let mut sql =
[INFO] [stdout]     "
[INFO] [stdout]     SELECT
[INFO] [stdout]         TABLE_CATALOG,
[INFO] [stdout]         TABLE_SCHEMA,
[INFO] [stdout]         TABLE_NAME,
[INFO] [stdout]         COLUMN_NAME,
[INFO] [stdout]         ORDINAL_POSITION,
[INFO] [stdout]         COLUMN_DEFAULT,
[INFO] [stdout]         IS_NULLABLE,
[INFO] [stdout]         DATA_TYPE,
[INFO] [stdout]         CHARACTER_MAXIMUM_LENGTH,
[INFO] [stdout]         CHARACTER_OCTET_LENGTH,
[INFO] [stdout]         NUMERIC_PRECISION,
[INFO] [stdout]         NUMERIC_SCALE,
[INFO] [stdout]         DATETIME_PRECISION,
[INFO] [stdout]         CHARACTER_SET_NAME,
[INFO] [stdout]         COLLATION_NAME,
[INFO] [stdout]         COLUMN_TYPE,
[INFO] [stdout]         COLUMN_KEY,
[INFO] [stdout]         EXTRA,
[INFO] [stdout]         `PRIVILEGES`,
[INFO] [stdout]         COLUMN_COMMENT,
[INFO] [stdout]         GENERATION_EXPRESSION,
[INFO] [stdout]         SRS_ID
[INFO] [stdout]     FROM
[INFO] [stdout]         information_schema.COLUMNS
[INFO] [stdout]     WHERE
[INFO] [stdout]         TABLE_SCHEMA = (
[INFO] [stdout]         SELECT
[INFO] [stdout]             DATABASE ())
[INFO] [stdout]     if table_names != '':
[INFO] [stdout]         AND FIND_IN_SET(TABLE_NAME, #{table_names})
[INFO] [stdout]     ORDER BY
[INFO] [stdout]         ORDINAL_POSITION;
[INFO] [stdout]     ".to_string()
[INFO] [stdout]     ; let mut rb_arg_map = rbson :: Document :: new() ;
[INFO] [stdout]     rb_arg_map.insert("table_names".to_string(), rbson ::
[INFO] [stdout]     to_bson(table_names).unwrap_or_default()) ; {} use rbatis :: executor ::
[INFO] [stdout]     { RbatisRef } ; let driver_type = RB.get_rbatis().driver_type() ? ; use
[INFO] [stdout]     rbatis :: { rbatis_sql, AsSqlTag } ; let sql_tag = driver_type.sql_tag() ;
[INFO] [stdout]     #[rb_py("
[INFO] [stdout]     SELECT
[INFO] [stdout]         TABLE_CATALOG,
[INFO] [stdout]         TABLE_SCHEMA,
[INFO] [stdout]         TABLE_NAME,
[INFO] [stdout]         COLUMN_NAME,
[INFO] [stdout]         ORDINAL_POSITION,
[INFO] [stdout]         COLUMN_DEFAULT,
[INFO] [stdout]         IS_NULLABLE,
[INFO] [stdout]         DATA_TYPE,
[INFO] [stdout]         CHARACTER_MAXIMUM_LENGTH,
[INFO] [stdout]         CHARACTER_OCTET_LENGTH,
[INFO] [stdout]         NUMERIC_PRECISION,
[INFO] [stdout]         NUMERIC_SCALE,
[INFO] [stdout]         DATETIME_PRECISION,
[INFO] [stdout]         CHARACTER_SET_NAME,
[INFO] [stdout]         COLLATION_NAME,
[INFO] [stdout]         COLUMN_TYPE,
[INFO] [stdout]         COLUMN_KEY,
[INFO] [stdout]         EXTRA,
[INFO] [stdout]         `PRIVILEGES`,
[INFO] [stdout]         COLUMN_COMMENT,
[INFO] [stdout]         GENERATION_EXPRESSION,
[INFO] [stdout]         SRS_ID
[INFO] [stdout]     FROM
[INFO] [stdout]         information_schema.COLUMNS
[INFO] [stdout]     WHERE
[INFO] [stdout]         TABLE_SCHEMA = (
[INFO] [stdout]         SELECT
[INFO] [stdout]             DATABASE ())
[INFO] [stdout]     if table_names != '':
[INFO] [stdout]         AND FIND_IN_SET(TABLE_NAME, #{table_names})
[INFO] [stdout]     ORDER BY
[INFO] [stdout]         ORDINAL_POSITION;
[INFO] [stdout]     ")]
[INFO] [stdout]     pub fn columns(arg : & rbson :: Bson, _tag : char) {}
[INFO] [stdout]     let(mut sql, rb_args) =
[INFO] [stdout]     columns(& rbson :: Bson :: Document(rb_arg_map), sql_tag) ;
[INFO] [stdout]     driver_type.do_replace_tag(& mut sql) ; use rbatis :: executor ::
[INFO] [stdout]     { Executor, ExecutorMut } ; RB.fetch(& sql, rb_args).await
[INFO] [stdout] }
[INFO] [stdout] ............gen macro py_sql end............
[INFO] [stdout] py_sql:
[INFO] [stdout]     SELECT
[INFO] [stdout]         TABLE_CATALOG,
[INFO] [stdout]         TABLE_SCHEMA,
[INFO] [stdout]         TABLE_NAME,
[INFO] [stdout]         COLUMN_NAME,
[INFO] [stdout]         ORDINAL_POSITION,
[INFO] [stdout]         COLUMN_DEFAULT,
[INFO] [stdout]         IS_NULLABLE,
[INFO] [stdout]         DATA_TYPE,
[INFO] [stdout]         CHARACTER_MAXIMUM_LENGTH,
[INFO] [stdout]         CHARACTER_OCTET_LENGTH,
[INFO] [stdout]         NUMERIC_PRECISION,
[INFO] [stdout]         NUMERIC_SCALE,
[INFO] [stdout]         DATETIME_PRECISION,
[INFO] [stdout]         CHARACTER_SET_NAME,
[INFO] [stdout]         COLLATION_NAME,
[INFO] [stdout]         COLUMN_TYPE,
[INFO] [stdout]         COLUMN_KEY,
[INFO] [stdout]         EXTRA,
[INFO] [stdout]         `PRIVILEGES`,
[INFO] [stdout]         COLUMN_COMMENT,
[INFO] [stdout]         GENERATION_EXPRESSION,
[INFO] [stdout]         SRS_ID
[INFO] [stdout]     FROM
[INFO] [stdout]         information_schema.COLUMNS
[INFO] [stdout]     WHERE
[INFO] [stdout]         TABLE_SCHEMA = (
[INFO] [stdout]         SELECT
[INFO] [stdout]             DATABASE ())
[INFO] [stdout]     if table_names != '':
[INFO] [stdout]         AND FIND_IN_SET(TABLE_NAME, #{table_names})
[INFO] [stdout]     ORDER BY
[INFO] [stdout]         ORDINAL_POSITION;
[INFO] [stdout]     
[INFO] [stdout] html:<mapper><update id="columns"> SELECT TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, ORDINAL_POSITION, COLUMN_DEFAULT, IS_NULLABLE, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH, CHARACTER_OCTET_LENGTH, NUMERIC_PRECISION, NUMERIC_SCALE, DATETIME_PRECISION, CHARACTER_SET_NAME, COLLATION_NAME, COLUMN_TYPE, COLUMN_KEY, EXTRA, `PRIVILEGES`, COLUMN_COMMENT, GENERATION_EXPRESSION, SRS_ID FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = ( SELECT DATABASE ())<if test="table_names != ''"> AND FIND_IN_SET(TABLE_NAME, #{table_names})</if> ORDER BY ORDINAL_POSITION; </update></mapper>
[INFO] [stdout] load html:[
[INFO] [stdout]      {
[INFO] [stdout]         tag: "update",
[INFO] [stdout]         attributes: {
[INFO] [stdout]             "id": "columns",
[INFO] [stdout]         },
[INFO] [stdout]         childs: [
[INFO] [stdout]              {
[INFO] [stdout]                 data: "SELECT TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, ORDINAL_POSITION, COLUMN_DEFAULT, IS_NULLABLE, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH, CHARACTER_OCTET_LENGTH, NUMERIC_PRECISION, NUMERIC_SCALE, DATETIME_PRECISION, CHARACTER_SET_NAME, COLLATION_NAME, COLUMN_TYPE, COLUMN_KEY, EXTRA, `PRIVILEGES`, COLUMN_COMMENT, GENERATION_EXPRESSION, SRS_ID FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = ( SELECT DATABASE ())",
[INFO] [stdout]             },
[INFO] [stdout]              {
[INFO] [stdout]                 tag: "if",
[INFO] [stdout]                 attributes: {
[INFO] [stdout]                     "test": "table_names != ''",
[INFO] [stdout]                 },
[INFO] [stdout]                 childs: [
[INFO] [stdout]                      {
[INFO] [stdout]                         data: "AND FIND_IN_SET(TABLE_NAME, #{table_names})",
[INFO] [stdout]                     },
[INFO] [stdout]                 ],
[INFO] [stdout]             },
[INFO] [stdout]              {
[INFO] [stdout]                 data: "ORDER BY ORDINAL_POSITION;",
[INFO] [stdout]             },
[INFO] [stdout]         ],
[INFO] [stdout]     },
[INFO] [stdout] ]
[INFO] [stdout] ............gen rb_pysql_fn:
[INFO] [stdout]  use rbatis_sql :: ops :: * ; pub fn
[INFO] [stdout] columns(arg : & rbson :: Bson, _tag : char) -> (String, Vec < rbson :: Bson >)
[INFO] [stdout] {
[INFO] [stdout]     use rbatis_sql :: ops :: AsProxy ; let mut sql = String ::
[INFO] [stdout]     with_capacity(1000) ; let mut args = Vec :: with_capacity(20) ;
[INFO] [stdout]     sql.push_str("SELECT TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, ORDINAL_POSITION, COLUMN_DEFAULT, IS_NULLABLE, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH, CHARACTER_OCTET_LENGTH, NUMERIC_PRECISION, NUMERIC_SCALE, DATETIME_PRECISION, CHARACTER_SET_NAME, COLLATION_NAME, COLUMN_TYPE, COLUMN_KEY, EXTRA, `PRIVILEGES`, COLUMN_COMMENT, GENERATION_EXPRESSION, SRS_ID FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = ( SELECT DATABASE ())")
[INFO] [stdout]     ; let dGFibGVfbmFtZXMgIT0gJyc_ =
[INFO] [stdout]     { let result = { (arg.index("table_names")).op_ne(& "") } ; result } ; if
[INFO] [stdout]     dGFibGVfbmFtZXMgIT0gJyc_
[INFO] [stdout]     {
[INFO] [stdout]         sql.push_str(" ") ; let c2VsZWN0OnRhYmxlX25hbWVz =
[INFO] [stdout]         { let result = { arg.index("table_names") } ; result } ;
[INFO] [stdout]         args.push(rbson :: bson! (c2VsZWN0OnRhYmxlX25hbWVz)) ;
[INFO] [stdout]         sql.push_str("AND FIND_IN_SET(TABLE_NAME, ?)") ;
[INFO] [stdout]     } sql.push_str("ORDER BY ORDINAL_POSITION;") ; rbatis_sql :: sql_index!
[INFO] [stdout]     (sql, _tag) ; return(sql, args) ;
[INFO] [stdout] }
[INFO] [stdout] ............gen rb_pysql_fn end............
[INFO] [stdout] ............gen impl CRUDTable:
[INFO] [stdout]  /// 表信息来自 sqlite_master
[INFO] [stdout] #[derive(Serialize, Deserialize, Default, Debug)]
[INFO] [stdout] #[serde(rename_all(deserialize = "SCREAMING_SNAKE_CASE"))] pub struct Table
[INFO] [stdout] {
[INFO] [stdout]     /// 项目的类型：table，index，view，trigger
[INFO] [stdout]     r#type: Option<String>, /// 项目的名称
[INFO] [stdout]     name: Option<String>, /// 所从属的表名，如索引所在的表名
[INFO] [stdout]     tbl_name: Option<String>, /// 项目在数据库页中存储的编号
[INFO] [stdout]     rootpage: Option<i64>, /// SQL语句
[INFO] [stdout]     sql: Option<String>,
[INFO] [stdout] } impl rbatis :: crud :: CRUDTable for Table
[INFO] [stdout] {
[INFO] [stdout]     fn get(& self, column : & str) -> rbson :: Bson
[INFO] [stdout]     {
[INFO] [stdout]         return match column
[INFO] [stdout]         {
[INFO] [stdout]             "r#type" | "type" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.r#type).unwrap_or_default() ; }
[INFO] [stdout]             "name" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.name).unwrap_or_default() ; }
[INFO] [stdout]             "tbl_name" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.tbl_name).unwrap_or_default() ; }
[INFO] [stdout]             "rootpage" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.rootpage).unwrap_or_default() ; }
[INFO] [stdout]             "sql" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.sql).unwrap_or_default() ; } _ =>
[INFO] [stdout]             { rbson :: Bson :: Null }
[INFO] [stdout]         }
[INFO] [stdout]     } fn table_name() -> String { "table".to_string() } fn table_columns() ->
[INFO] [stdout]     String { "type,name,tbl_name,rootpage,sql".to_string() } fn
[INFO] [stdout]     formats(driver_type : & rbatis :: core :: db :: DriverType) -> std ::
[INFO] [stdout]     collections :: HashMap < String, String >
[INFO] [stdout]     {
[INFO] [stdout]         let mut m : std :: collections :: HashMap < String, String > = std ::
[INFO] [stdout]         collections :: HashMap :: new() ; match driver_type
[INFO] [stdout]         {
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Mysql => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Postgres => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Sqlite => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Mssql => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: None => { return m ; },
[INFO] [stdout]         }
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] ............gen impl CRUDTable end............
[INFO] [stdout] ............gen impl CRUDTable:
[INFO] [stdout]  /// 表信息来自 sqlite_master
[INFO] [stdout] #[derive(Serialize, Deserialize, Default, Debug)]
[INFO] [stdout] #[serde(rename_all(deserialize = "SCREAMING_SNAKE_CASE"))] pub struct Table
[INFO] [stdout] {
[INFO] [stdout]     /// 项目的类型：table，index，view，trigger
[INFO] [stdout]     r#type: Option<String>, /// 项目的名称
[INFO] [stdout]     name: Option<String>, /// 所从属的表名，如索引所在的表名
[INFO] [stdout]     tbl_name: Option<String>, /// 项目在数据库页中存储的编号
[INFO] [stdout]     rootpage: Option<i64>, /// SQL语句
[INFO] [stdout]     sql: Option<String>,
[INFO] [stdout] } impl rbatis :: crud :: CRUDTable for Table
[INFO] [stdout] {
[INFO] [stdout]     fn get(& self, column : & str) -> rbson :: Bson
[INFO] [stdout]     {
[INFO] [stdout]         return match column
[INFO] [stdout]         {
[INFO] [stdout]             "r#type" | "type" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.r#type).unwrap_or_default() ; }
[INFO] [stdout]             "name" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.name).unwrap_or_default() ; }
[INFO] [stdout]             "tbl_name" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.tbl_name).unwrap_or_default() ; }
[INFO] [stdout]             "rootpage" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.rootpage).unwrap_or_default() ; }
[INFO] [stdout]             "sql" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.sql).unwrap_or_default() ; } _ =>
[INFO] [stdout]             { rbson :: Bson :: Null }
[INFO] [stdout]         }
[INFO] [stdout]     } fn table_name() -> String { "table".to_string() } fn table_columns() ->
[INFO] [stdout]     String { "type,name,tbl_name,rootpage,sql".to_string() } fn
[INFO] [stdout]     formats(driver_type : & rbatis :: core :: db :: DriverType) -> std ::
[INFO] [stdout]     collections :: HashMap < String, String >
[INFO] [stdout]     {
[INFO] [stdout]         let mut m : std :: collections :: HashMap < String, String > = std ::
[INFO] [stdout]         collections :: HashMap :: new() ; match driver_type
[INFO] [stdout]         {
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Mysql => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Postgres => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Sqlite => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Mssql => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: None => { return m ; },
[INFO] [stdout]         }
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] ............gen impl CRUDTable end............
[INFO] [stdout] ............gen macro py_sql :
[INFO] [stdout]  pub async fn tables(table_names : & [& str]) -> rbatis :: core :: Result < Vec
[INFO] [stdout] < Table > >
[INFO] [stdout] {
[INFO] [stdout]     let mut sql =
[INFO] [stdout]     "
[INFO] [stdout]     SELECT type, name, tbl_name, rootpage, sql
[INFO] [stdout]     FROM sqlite_master
[INFO] [stdout]     WHERE type = 'table'
[INFO] [stdout]         AND (
[INFO] [stdout]         1 = 2
[INFO] [stdout]     trim ',': for item in table_names:
[INFO] [stdout]         OR name = '#{item}'
[INFO] [stdout]         )
[INFO] [stdout]     ORDER by rootpage;
[INFO] [stdout]     ".to_string()
[INFO] [stdout]     ; let mut rb_arg_map = rbson :: Document :: new() ;
[INFO] [stdout]     rb_arg_map.insert("table_names".to_string(), rbson ::
[INFO] [stdout]     to_bson(table_names).unwrap_or_default()) ; {} use rbatis :: executor ::
[INFO] [stdout]     { RbatisRef } ; let driver_type = RB.get_rbatis().driver_type() ? ; use
[INFO] [stdout]     rbatis :: { rbatis_sql, AsSqlTag } ; let sql_tag = driver_type.sql_tag() ;
[INFO] [stdout]     #[rb_py("
[INFO] [stdout]     SELECT type, name, tbl_name, rootpage, sql
[INFO] [stdout]     FROM sqlite_master
[INFO] [stdout]     WHERE type = 'table'
[INFO] [stdout]         AND (
[INFO] [stdout]         1 = 2
[INFO] [stdout]     trim ',': for item in table_names:
[INFO] [stdout]         OR name = '#{item}'
[INFO] [stdout]         )
[INFO] [stdout]     ORDER by rootpage;
[INFO] [stdout]     ")]
[INFO] [stdout]     pub fn tables(arg : & rbson :: Bson, _tag : char) {} let(mut sql, rb_args)
[INFO] [stdout]     = tables(& rbson :: Bson :: Document(rb_arg_map), sql_tag) ;
[INFO] [stdout]     driver_type.do_replace_tag(& mut sql) ; use rbatis :: executor ::
[INFO] [stdout]     { Executor, ExecutorMut } ; RB.fetch(& sql, rb_args).await
[INFO] [stdout] }
[INFO] [stdout] ............gen macro py_sql end............
[INFO] [stdout] py_sql:
[INFO] [stdout]     SELECT type, name, tbl_name, rootpage, sql
[INFO] [stdout]     FROM sqlite_master
[INFO] [stdout]     WHERE type = 'table'
[INFO] [stdout]         AND (
[INFO] [stdout]         1 = 2
[INFO] [stdout]     trim ',': for item in table_names:
[INFO] [stdout]         OR name = '#{item}'
[INFO] [stdout]         )
[INFO] [stdout]     ORDER by rootpage;
[INFO] [stdout]     
[INFO] [stdout] html:<mapper><update id="tables"> SELECT type, name, tbl_name, rootpage, sql FROM sqlite_master WHERE type = 'table' AND ( 1 = 2<trim prefixOverrides="," suffixOverrides=","><foreach collection="table_names" index="" item="item" > OR name = '#{item}' )</foreach></trim> ORDER by rootpage; </update></mapper>
[INFO] [stdout] load html:[
[INFO] [stdout]      {
[INFO] [stdout]         tag: "update",
[INFO] [stdout]         attributes: {
[INFO] [stdout]             "id": "tables",
[INFO] [stdout]         },
[INFO] [stdout]         childs: [
[INFO] [stdout]              {
[INFO] [stdout]                 data: "SELECT type, name, tbl_name, rootpage, sql FROM sqlite_master WHERE type = 'table' AND ( 1 = 2",
[INFO] [stdout]             },
[INFO] [stdout]              {
[INFO] [stdout]                 tag: "trim",
[INFO] [stdout]                 attributes: {
[INFO] [stdout]                     "suffixOverrides": ",",
[INFO] [stdout]                     "prefixOverrides": ",",
[INFO] [stdout]                 },
[INFO] [stdout]                 childs: [
[INFO] [stdout]                      {
[INFO] [stdout]                         tag: "foreach",
[INFO] [stdout]                         attributes: {
[INFO] [stdout]                             "item": "item",
[INFO] [stdout]                             "index": "",
[INFO] [stdout]                             "collection": "table_names",
[INFO] [stdout]                         },
[INFO] [stdout]                         childs: [
[INFO] [stdout]                              {
[INFO] [stdout]                                 data: "OR name = '#{item}' )",
[INFO] [stdout]                             },
[INFO] [stdout]                         ],
[INFO] [stdout]                     },
[INFO] [stdout]                 ],
[INFO] [stdout]             },
[INFO] [stdout]              {
[INFO] [stdout]                 data: "ORDER by rootpage;",
[INFO] [stdout]             },
[INFO] [stdout]         ],
[INFO] [stdout]     },
[INFO] [stdout] ]
[INFO] [stdout] ............gen rb_pysql_fn:
[INFO] [stdout]  use rbatis_sql :: ops :: * ; pub fn tables(arg : & rbson :: Bson, _tag : char)
[INFO] [stdout] -> (String, Vec < rbson :: Bson >)
[INFO] [stdout] {
[INFO] [stdout]     use rbatis_sql :: ops :: AsProxy ; let mut sql = String ::
[INFO] [stdout]     with_capacity(1000) ; let mut args = Vec :: with_capacity(20) ;
[INFO] [stdout]     sql.push_str("SELECT type, name, tbl_name, rootpage, sql FROM sqlite_master WHERE type = 'table' AND ( 1 = 2")
[INFO] [stdout]     ; sql.push_str("") ;
[INFO] [stdout]     sql.push_str(&
[INFO] [stdout]     {
[INFO] [stdout]         let mut sql = String :: new() ; let c2VsZWN0OnRyaW06dGFibGVfbmFtZXM_ =
[INFO] [stdout]         { let result = { arg.index("table_names") } ; result } ;
[INFO] [stdout]         sql.push_str(" ") ; if c2VsZWN0OnRyaW06dGFibGVfbmFtZXM_.is_array()
[INFO] [stdout]         {
[INFO] [stdout]             let mut index = 0 ;
[INFO] [stdout]             {
[INFO] [stdout]                 let foreach_arr =
[INFO] [stdout]                 c2VsZWN0OnRyaW06dGFibGVfbmFtZXM_.array().unwrap() ; for item
[INFO] [stdout]                 in foreach_arr
[INFO] [stdout]                 {
[INFO] [stdout]                     let item = item ; let Zm9yZWFjaDppdGVt =
[INFO] [stdout]                     { let result = { item } ; result } ;
[INFO] [stdout]                     args.push(rbson :: bson! (Zm9yZWFjaDppdGVt)) ;
[INFO] [stdout]                     sql.push_str("OR name = '?' )") ; index = index + 1 ;
[INFO] [stdout]                 }
[INFO] [stdout]             }
[INFO] [stdout]         } else if c2VsZWN0OnRyaW06dGFibGVfbmFtZXM_.is_object()
[INFO] [stdout]         {
[INFO] [stdout]             {
[INFO] [stdout]                 let foreach_arr =
[INFO] [stdout]                 c2VsZWN0OnRyaW06dGFibGVfbmFtZXM_.object().unwrap() ;
[INFO] [stdout]                 for(index, item) in foreach_arr
[INFO] [stdout]                 {
[INFO] [stdout]                     let item = item ; let Zm9yZWFjaDppdGVt =
[INFO] [stdout]                     { let result = { item } ; result } ;
[INFO] [stdout]                     args.push(rbson :: bson! (Zm9yZWFjaDppdGVt)) ;
[INFO] [stdout]                     sql.push_str("OR name = '?' )") ;
[INFO] [stdout]                 }
[INFO] [stdout]             }
[INFO] [stdout]         } sql = sql.trim_start_matches(",").trim_end_matches(",").to_string()
[INFO] [stdout]         ; sql
[INFO] [stdout]     }) ; sql.push_str("") ; sql.push_str("ORDER by rootpage;") ; rbatis_sql ::
[INFO] [stdout]     sql_index! (sql, _tag) ; return(sql, args) ;
[INFO] [stdout] }
[INFO] [stdout] ............gen rb_pysql_fn end............
[INFO] [stdout] ............gen macro py_sql :
[INFO] [stdout]  pub async fn columns(table_name : & str) -> rbatis :: core :: Result < Vec <
[INFO] [stdout] TableColumn > >
[INFO] [stdout] {
[INFO] [stdout]     let mut sql = "
[INFO] [stdout]     pragma table_info('#{table_names}');
[INFO] [stdout]     ".to_string()
[INFO] [stdout]     ; let mut rb_arg_map = rbson :: Document :: new() ;
[INFO] [stdout]     rb_arg_map.insert("table_name".to_string(), rbson ::
[INFO] [stdout]     to_bson(table_name).unwrap_or_default()) ; {} use rbatis :: executor ::
[INFO] [stdout]     { RbatisRef } ; let driver_type = RB.get_rbatis().driver_type() ? ; use
[INFO] [stdout]     rbatis :: { rbatis_sql, AsSqlTag } ; let sql_tag = driver_type.sql_tag() ;
[INFO] [stdout]     #[rb_py("
[INFO] [stdout]     pragma table_info('#{table_names}');
[INFO] [stdout]     ")] pub fn
[INFO] [stdout]     columns(arg : & rbson :: Bson, _tag : char) {} let(mut sql, rb_args) =
[INFO] [stdout]     columns(& rbson :: Bson :: Document(rb_arg_map), sql_tag) ;
[INFO] [stdout]     driver_type.do_replace_tag(& mut sql) ; use rbatis :: executor ::
[INFO] [stdout]     { Executor, ExecutorMut } ; RB.fetch(& sql, rb_args).await
[INFO] [stdout] }
[INFO] [stdout] ............gen macro py_sql end............
[INFO] [stdout] py_sql:
[INFO] [stdout]     pragma table_info('#{table_names}');
[INFO] [stdout]     
[INFO] [stdout] html:<mapper><update id="columns"> pragma table_info('#{table_names}'); </update></mapper>
[INFO] [stdout] load html:[
[INFO] [stdout]      {
[INFO] [stdout]         tag: "update",
[INFO] [stdout]         attributes: {
[INFO] [stdout]             "id": "columns",
[INFO] [stdout]         },
[INFO] [stdout]         childs: [
[INFO] [stdout]              {
[INFO] [stdout]                 data: "pragma table_info('#{table_names}');",
[INFO] [stdout]             },
[INFO] [stdout]         ],
[INFO] [stdout]     },
[INFO] [stdout] ]
[INFO] [stdout] ............gen rb_pysql_fn:
[INFO] [stdout]  use rbatis_sql :: ops :: * ; pub fn
[INFO] [stdout] columns(arg : & rbson :: Bson, _tag : char) -> (String, Vec < rbson :: Bson >)
[INFO] [stdout] {
[INFO] [stdout]     use rbatis_sql :: ops :: AsProxy ; let mut sql = String ::
[INFO] [stdout]     with_capacity(1000) ; let mut args = Vec :: with_capacity(20) ; let
[INFO] [stdout]     c2VsZWN0OnRhYmxlX25hbWVz =
[INFO] [stdout]     { let result = { arg.index("table_names") } ; result } ;
[INFO] [stdout]     args.push(rbson :: bson! (c2VsZWN0OnRhYmxlX25hbWVz)) ;
[INFO] [stdout]     sql.push_str("pragma table_info('?');") ; rbatis_sql :: sql_index!
[INFO] [stdout]     (sql, _tag) ; return(sql, args) ;
[INFO] [stdout] }
[INFO] [stdout] ............gen rb_pysql_fn end............
[INFO] [stdout] ............gen macro py_sql :
[INFO] [stdout]  pub async fn tables(table_names : & [& str]) -> rbatis :: core :: Result < Vec
[INFO] [stdout] < Table > >
[INFO] [stdout] {
[INFO] [stdout]     let mut sql =
[INFO] [stdout]     "
[INFO] [stdout]     SELECT type, name, tbl_name, rootpage, sql
[INFO] [stdout]     FROM sqlite_master
[INFO] [stdout]     WHERE type = 'table'
[INFO] [stdout]         AND (
[INFO] [stdout]         1 = 2
[INFO] [stdout]     trim ',': for item in table_names:
[INFO] [stdout]         OR name = '#{item}'
[INFO] [stdout]         )
[INFO] [stdout]     ORDER by rootpage;
[INFO] [stdout]     ".to_string()
[INFO] [stdout]     ; let mut rb_arg_map = rbson :: Document :: new() ;
[INFO] [stdout]     rb_arg_map.insert("table_names".to_string(), rbson ::
[INFO] [stdout]     to_bson(table_names).unwrap_or_default()) ; {} use rbatis :: executor ::
[INFO] [stdout]     { RbatisRef } ; let driver_type = RB.get_rbatis().driver_type() ? ; use
[INFO] [stdout]     rbatis :: { rbatis_sql, AsSqlTag } ; let sql_tag = driver_type.sql_tag() ;
[INFO] [stdout]     #[rb_py("
[INFO] [stdout]     SELECT type, name, tbl_name, rootpage, sql
[INFO] [stdout]     FROM sqlite_master
[INFO] [stdout]     WHERE type = 'table'
[INFO] [stdout]         AND (
[INFO] [stdout]         1 = 2
[INFO] [stdout]     trim ',': for item in table_names:
[INFO] [stdout]         OR name = '#{item}'
[INFO] [stdout]         )
[INFO] [stdout]     ORDER by rootpage;
[INFO] [stdout]     ")]
[INFO] [stdout]     pub fn tables(arg : & rbson :: Bson, _tag : char) {} let(mut sql, rb_args)
[INFO] [stdout]     = tables(& rbson :: Bson :: Document(rb_arg_map), sql_tag) ;
[INFO] [stdout]     driver_type.do_replace_tag(& mut sql) ; use rbatis :: executor ::
[INFO] [stdout]     { Executor, ExecutorMut } ; RB.fetch(& sql, rb_args).await
[INFO] [stdout] }
[INFO] [stdout] ............gen macro py_sql end............
[INFO] [stdout] py_sql:
[INFO] [stdout]     SELECT type, name, tbl_name, rootpage, sql
[INFO] [stdout]     FROM sqlite_master
[INFO] [stdout]     WHERE type = 'table'
[INFO] [stdout]         AND (
[INFO] [stdout]         1 = 2
[INFO] [stdout]     trim ',': for item in table_names:
[INFO] [stdout]         OR name = '#{item}'
[INFO] [stdout]         )
[INFO] [stdout]     ORDER by rootpage;
[INFO] [stdout]     
[INFO] [stdout] html:<mapper><update id="tables"> SELECT type, name, tbl_name, rootpage, sql FROM sqlite_master WHERE type = 'table' AND ( 1 = 2<trim prefixOverrides="," suffixOverrides=","><foreach collection="table_names" index="" item="item" > OR name = '#{item}' )</foreach></trim> ORDER by rootpage; </update></mapper>
[INFO] [stdout] load html:[
[INFO] [stdout]      {
[INFO] [stdout]         tag: "update",
[INFO] [stdout]         attributes: {
[INFO] [stdout]             "id": "tables",
[INFO] [stdout]         },
[INFO] [stdout]         childs: [
[INFO] [stdout]              {
[INFO] [stdout]                 data: "SELECT type, name, tbl_name, rootpage, sql FROM sqlite_master WHERE type = 'table' AND ( 1 = 2",
[INFO] [stdout]             },
[INFO] [stdout]              {
[INFO] [stdout]                 tag: "trim",
[INFO] [stdout]                 attributes: {
[INFO] [stdout]                     "prefixOverrides": ",",
[INFO] [stdout]                     "suffixOverrides": ",",
[INFO] [stdout]                 },
[INFO] [stdout]                 childs: [
[INFO] [stdout]                      {
[INFO] [stdout]                         tag: "foreach",
[INFO] [stdout]                         attributes: {
[INFO] [stdout]                             "collection": "table_names",
[INFO] [stdout]                             "index": "",
[INFO] [stdout]                             "item": "item",
[INFO] [stdout]                         },
[INFO] [stdout]                         childs: [
[INFO] [stdout]                              {
[INFO] [stdout]                                 data: "OR name = '#{item}' )",
[INFO] [stdout]                             },
[INFO] [stdout]                         ],
[INFO] [stdout]                     },
[INFO] [stdout]                 ],
[INFO] [stdout]             },
[INFO] [stdout]              {
[INFO] [stdout]                 data: "ORDER by rootpage;",
[INFO] [stdout]             },
[INFO] [stdout]         ],
[INFO] [stdout]     },
[INFO] [stdout] ]
[INFO] [stdout] ............gen rb_pysql_fn:
[INFO] [stdout]  use rbatis_sql :: ops :: * ; pub fn tables(arg : & rbson :: Bson, _tag : char)
[INFO] [stdout] -> (String, Vec < rbson :: Bson >)
[INFO] [stdout] {
[INFO] [stdout]     use rbatis_sql :: ops :: AsProxy ; let mut sql = String ::
[INFO] [stdout]     with_capacity(1000) ; let mut args = Vec :: with_capacity(20) ;
[INFO] [stdout]     sql.push_str("SELECT type, name, tbl_name, rootpage, sql FROM sqlite_master WHERE type = 'table' AND ( 1 = 2")
[INFO] [stdout]     ; sql.push_str("") ;
[INFO] [stdout]     sql.push_str(&
[INFO] [stdout]     {
[INFO] [stdout]         let mut sql = String :: new() ; let c2VsZWN0OnRyaW06dGFibGVfbmFtZXM_ =
[INFO] [stdout]         { let result = { arg.index("table_names") } ; result } ;
[INFO] [stdout]         sql.push_str(" ") ; if c2VsZWN0OnRyaW06dGFibGVfbmFtZXM_.is_array()
[INFO] [stdout]         {
[INFO] [stdout]             let mut index = 0 ;
[INFO] [stdout]             {
[INFO] [stdout]                 let foreach_arr =
[INFO] [stdout]                 c2VsZWN0OnRyaW06dGFibGVfbmFtZXM_.array().unwrap() ; for item
[INFO] [stdout]                 in foreach_arr
[INFO] [stdout]                 {
[INFO] [stdout]                     let item = item ; let Zm9yZWFjaDppdGVt =
[INFO] [stdout]                     { let result = { item } ; result } ;
[INFO] [stdout]                     args.push(rbson :: bson! (Zm9yZWFjaDppdGVt)) ;
[INFO] [stdout]                     sql.push_str("OR name = '?' )") ; index = index + 1 ;
[INFO] [stdout]                 }
[INFO] [stdout]             }
[INFO] [stdout]         } else if c2VsZWN0OnRyaW06dGFibGVfbmFtZXM_.is_object()
[INFO] [stdout]         {
[INFO] [stdout]             {
[INFO] [stdout]                 let foreach_arr =
[INFO] [stdout]                 c2VsZWN0OnRyaW06dGFibGVfbmFtZXM_.object().unwrap() ;
[INFO] [stdout]                 for(index, item) in foreach_arr
[INFO] [stdout]                 {
[INFO] [stdout]                     let item = item ; let Zm9yZWFjaDppdGVt =
[INFO] [stdout]                     { let result = { item } ; result } ;
[INFO] [stdout]                     args.push(rbson :: bson! (Zm9yZWFjaDppdGVt)) ;
[INFO] [stdout]                     sql.push_str("OR name = '?' )") ;
[INFO] [stdout]                 }
[INFO] [stdout]             }
[INFO] [stdout]         } sql = sql.trim_start_matches(",").trim_end_matches(",").to_string()
[INFO] [stdout]         ; sql
[INFO] [stdout]     }) ; sql.push_str("") ; sql.push_str("ORDER by rootpage;") ; rbatis_sql ::
[INFO] [stdout]     sql_index! (sql, _tag) ; return(sql, args) ;
[INFO] [stdout] }
[INFO] [stdout] ............gen rb_pysql_fn end............
[INFO] [stdout] ............gen macro py_sql :
[INFO] [stdout]  pub async fn columns(table_name : & str) -> rbatis :: core :: Result < Vec <
[INFO] [stdout] TableColumn > >
[INFO] [stdout] {
[INFO] [stdout]     let mut sql = "
[INFO] [stdout]     pragma table_info('#{table_names}');
[INFO] [stdout]     ".to_string()
[INFO] [stdout]     ; let mut rb_arg_map = rbson :: Document :: new() ;
[INFO] [stdout]     rb_arg_map.insert("table_name".to_string(), rbson ::
[INFO] [stdout]     to_bson(table_name).unwrap_or_default()) ; {} use rbatis :: executor ::
[INFO] [stdout]     { RbatisRef } ; let driver_type = RB.get_rbatis().driver_type() ? ; use
[INFO] [stdout]     rbatis :: { rbatis_sql, AsSqlTag } ; let sql_tag = driver_type.sql_tag() ;
[INFO] [stdout]     #[rb_py("
[INFO] [stdout]     pragma table_info('#{table_names}');
[INFO] [stdout]     ")] pub fn
[INFO] [stdout]     columns(arg : & rbson :: Bson, _tag : char) {} let(mut sql, rb_args) =
[INFO] [stdout]     columns(& rbson :: Bson :: Document(rb_arg_map), sql_tag) ;
[INFO] [stdout]     driver_type.do_replace_tag(& mut sql) ; use rbatis :: executor ::
[INFO] [stdout]     { Executor, ExecutorMut } ; RB.fetch(& sql, rb_args).await
[INFO] [stdout] }
[INFO] [stdout] ............gen macro py_sql end............
[INFO] [stdout] py_sql:
[INFO] [stdout]     pragma table_info('#{table_names}');
[INFO] [stdout]     
[INFO] [stdout] html:<mapper><update id="columns"> pragma table_info('#{table_names}'); </update></mapper>
[INFO] [stdout] load html:[
[INFO] [stdout]      {
[INFO] [stdout]         tag: "update",
[INFO] [stdout]         attributes: {
[INFO] [stdout]             "id": "columns",
[INFO] [stdout]         },
[INFO] [stdout]         childs: [
[INFO] [stdout]              {
[INFO] [stdout]                 data: "pragma table_info('#{table_names}');",
[INFO] [stdout]             },
[INFO] [stdout]         ],
[INFO] [stdout]     },
[INFO] [stdout] ]
[INFO] [stdout] ............gen rb_pysql_fn:
[INFO] [stdout]  use rbatis_sql :: ops :: * ; pub fn
[INFO] [stdout] columns(arg : & rbson :: Bson, _tag : char) -> (String, Vec < rbson :: Bson >)
[INFO] [stdout] {
[INFO] [stdout]     use rbatis_sql :: ops :: AsProxy ; let mut sql = String ::
[INFO] [stdout]     with_capacity(1000) ; let mut args = Vec :: with_capacity(20) ; let
[INFO] [stdout]     c2VsZWN0OnRhYmxlX25hbWVz =
[INFO] [stdout]     { let result = { arg.index("table_names") } ; result } ;
[INFO] [stdout]     args.push(rbson :: bson! (c2VsZWN0OnRhYmxlX25hbWVz)) ;
[INFO] [stdout]     sql.push_str("pragma table_info('?');") ; rbatis_sql :: sql_index!
[INFO] [stdout]     (sql, _tag) ; return(sql, args) ;
[INFO] [stdout] }
[INFO] [stdout] ............gen rb_pysql_fn end............
[INFO] [stderr]     Checking crab-common v0.1.0 (/opt/rustwide/workdir/crab-common)
[INFO] [stderr]     Checking crab-model v0.1.0 (/opt/rustwide/workdir/crab-model)
[INFO] [stdout] ............gen impl CRUDTable:
[INFO] [stdout] ............gen impl CRUDTable:
[INFO] [stdout]  /// 用户信息表
[INFO] [stdout] #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
[INFO] [stdout] Serialize, Deserialize, Validate,)]
[INFO] [stdout] #[serde(rename_all(serialize = "camelCase"))] pub struct SysUser
[INFO] [stdout] {
[INFO] [stdout]     /// 用户ID
[INFO] [stdout]     pub id: Option<i64>, /// 用户编号
[INFO] [stdout]     #[validate(length(max = 50))] pub no: Option<String>, /// 姓名
[INFO] [stdout]     #[validate(length(max = 50))] pub name: Option<String>, /// 帐号
[INFO] [stdout]     #[validate(length(max = 30))] pub account: Option<String>, /// 密码
[INFO] [stdout]     #[validate(length(max = 100))] pub password: Option<String>, /// 邮箱
[INFO] [stdout]     #[validate(length(max = 50))] pub email: Option<String>, /// 手机号码
[INFO] [stdout]     #[validate(length(max = 11))] pub phone: Option<String>,
[INFO] [stdout]     /// 性别（0男 1女 2未知）
[INFO] [stdout]     #[validate(length(max = 1))] pub sex: Option<String>, /// 头像地址
[INFO] [stdout]     #[validate(length(max = 100))] pub avatar: Option<String>,
[INFO] [stdout]     /// 帐号状态（0正常 1停用）
[INFO] [stdout]     pub status: Option<i8>, /// 最后登录IP
[INFO] [stdout]     #[validate(length(max = 128))] pub login_ip: Option<String>,
[INFO] [stdout]     /// 最后登录时间
[INFO] [stdout]     pub login_at: Option<rbatis::DateTimeNative>, /// 备注
[INFO] [stdout]     #[validate(length(max = 500))] pub remark: Option<String>, /// 创建者
[INFO] [stdout]  /// 用户信息表
[INFO] [stdout] #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
[INFO] [stdout] Serialize, Deserialize, Validate,)]
[INFO] [stdout] #[serde(rename_all(serialize = "camelCase"))] pub struct SysUser
[INFO] [stdout] {
[INFO] [stdout]     /// 用户ID
[INFO] [stdout]     pub id: Option<i64>, /// 用户编号
[INFO] [stdout]     #[validate(length(max = 50))] pub no: Option<String>, /// 姓名
[INFO] [stdout]     #[validate(length(max = 50))] pub name: Option<String>, /// 帐号
[INFO] [stdout]     #[validate(length(max = 30))] pub account: Option<String>, /// 密码
[INFO] [stdout]     #[validate(length(max = 100))] pub password: Option<String>, /// 邮箱
[INFO] [stdout]     #[validate(length(max = 50))] pub email: Option<String>, /// 手机号码
[INFO] [stdout]     #[validate(length(max = 11))] pub phone: Option<String>,
[INFO] [stdout]     /// 性别（0男 1女 2未知）
[INFO] [stdout]     #[validate(length(max = 1))] pub sex: Option<String>, /// 头像地址
[INFO] [stdout]     #[validate(length(max = 100))] pub avatar: Option<String>,
[INFO] [stdout]     /// 帐号状态（0正常 1停用）
[INFO] [stdout]     pub status: Option<i8>, /// 最后登录IP
[INFO] [stdout]     #[validate(length(max = 128))] pub login_ip: Option<String>,
[INFO] [stdout]     /// 最后登录时间
[INFO] [stdout]     pub login_at: Option<rbatis::DateTimeNative>, /// 备注
[INFO] [stdout]     #[validate(length(max = 500))] pub remark: Option<String>, /// 创建者
[INFO] [stdout]     pub create_by: Option<i64>, /// 创建时间
[INFO] [stdout]     pub create_at: Option<rbatis::DateTimeNative>, /// 更新者
[INFO] [stdout]     pub update_by: Option<i64>, /// 更新时间
[INFO] [stdout]     pub update_at: Option<rbatis::DateTimeNative>,
[INFO] [stdout]     /// 删除标志（0代表存在 1代表删除）
[INFO] [stdout]     pub del_flag: Option<i8>,
[INFO] [stdout] } impl rbatis :: crud :: CRUDTable for SysUser
[INFO] [stdout] {
[INFO] [stdout]     fn get(& self, column : & str) -> rbson :: Bson
[INFO] [stdout]     {
[INFO] [stdout]     pub create_by: Option<i64>, /// 创建时间
[INFO] [stdout]     pub create_at: Option<rbatis::DateTimeNative>, /// 更新者
[INFO] [stdout]     pub update_by: Option<i64>, /// 更新时间
[INFO] [stdout]     pub update_at: Option<rbatis::DateTimeNative>,
[INFO] [stdout]     /// 删除标志（0代表存在 1代表删除）
[INFO] [stdout]     pub del_flag: Option<i8>,
[INFO] [stdout] } impl rbatis :: crud :: CRUDTable for SysUser
[INFO] [stdout] {
[INFO] [stdout]     fn get(& self, column : & str) -> rbson :: Bson
[INFO] [stdout]         return match column
[INFO] [stdout]         {
[INFO] [stdout]             "id" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.id).unwrap_or_default() ; } "no"
[INFO] [stdout]             => { return rbson :: to_bson(& self.no).unwrap_or_default() ; }
[INFO] [stdout]             "name" =>
[INFO] [stdout]     {
[INFO] [stdout]         return match column
[INFO] [stdout]         {
[INFO] [stdout]             { return rbson :: to_bson(& self.name).unwrap_or_default() ; }
[INFO] [stdout]             "account" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.account).unwrap_or_default() ; }
[INFO] [stdout]             "password" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.password).unwrap_or_default() ; }
[INFO] [stdout]             "email" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.email).unwrap_or_default() ; }
[INFO] [stdout]             "phone" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.phone).unwrap_or_default() ; }
[INFO] [stdout]             "id" =>
[INFO] [stdout]             "sex" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.sex).unwrap_or_default() ; }
[INFO] [stdout]             "avatar" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.avatar).unwrap_or_default() ; }
[INFO] [stdout]             "status" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.id).unwrap_or_default() ; } "no"
[INFO] [stdout]             => { return rbson :: to_bson(& self.no).unwrap_or_default() ; }
[INFO] [stdout]             { return rbson :: to_bson(& self.status).unwrap_or_default() ; }
[INFO] [stdout]             "name" =>
[INFO] [stdout]             "login_ip" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.login_ip).unwrap_or_default() ; }
[INFO] [stdout]             { return rbson :: to_bson(& self.name).unwrap_or_default() ; }
[INFO] [stdout]             "login_at" =>
[INFO] [stdout]             "account" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.login_at).unwrap_or_default() ; }
[INFO] [stdout]             { return rbson :: to_bson(& self.account).unwrap_or_default() ; }
[INFO] [stdout]             "remark" =>
[INFO] [stdout]             "password" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.remark).unwrap_or_default() ; }
[INFO] [stdout]             { return rbson :: to_bson(& self.password).unwrap_or_default() ; }
[INFO] [stdout]             "create_by" =>
[INFO] [stdout]             "email" =>
[INFO] [stdout]             {
[INFO] [stdout]             { return rbson :: to_bson(& self.email).unwrap_or_default() ; }
[INFO] [stdout]                 return rbson :: to_bson(& self.create_by).unwrap_or_default()
[INFO] [stdout]             "phone" =>
[INFO] [stdout]                 ;
[INFO] [stdout]             { return rbson :: to_bson(& self.phone).unwrap_or_default() ; }
[INFO] [stdout]             } "create_at" =>
[INFO] [stdout]             "sex" =>
[INFO] [stdout]             {
[INFO] [stdout]             { return rbson :: to_bson(& self.sex).unwrap_or_default() ; }
[INFO] [stdout]                 return rbson :: to_bson(& self.create_at).unwrap_or_default()
[INFO] [stdout]             "avatar" =>
[INFO] [stdout]                 ;
[INFO] [stdout]             { return rbson :: to_bson(& self.avatar).unwrap_or_default() ; }
[INFO] [stdout]             } "update_by" =>
[INFO] [stdout]             "status" =>
[INFO] [stdout]             {
[INFO] [stdout]             { return rbson :: to_bson(& self.status).unwrap_or_default() ; }
[INFO] [stdout]                 return rbson :: to_bson(& self.update_by).unwrap_or_default()
[INFO] [stdout]             "login_ip" =>
[INFO] [stdout]                 ;
[INFO] [stdout]             { return rbson :: to_bson(& self.login_ip).unwrap_or_default() ; }
[INFO] [stdout]             } "update_at" =>
[INFO] [stdout]             "login_at" =>
[INFO] [stdout]             {
[INFO] [stdout]             { return rbson :: to_bson(& self.login_at).unwrap_or_default() ; }
[INFO] [stdout]                 return rbson :: to_bson(& self.update_at).unwrap_or_default()
[INFO] [stdout]             "remark" =>
[INFO] [stdout]                 ;
[INFO] [stdout]             { return rbson :: to_bson(& self.remark).unwrap_or_default() ; }
[INFO] [stdout]             } "del_flag" =>
[INFO] [stdout]             "create_by" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.del_flag).unwrap_or_default() ; }
[INFO] [stdout]             {
[INFO] [stdout]             _ => { rbson :: Bson :: Null }
[INFO] [stdout]                 return rbson :: to_bson(& self.create_by).unwrap_or_default()
[INFO] [stdout]         }
[INFO] [stdout]                 ;
[INFO] [stdout]     } fn table_name() -> String { "sys_user".to_string() } fn table_columns()
[INFO] [stdout]             } "create_at" =>
[INFO] [stdout]     -> String
[INFO] [stdout]             {
[INFO] [stdout]     {
[INFO] [stdout]                 return rbson :: to_bson(& self.create_at).unwrap_or_default()
[INFO] [stdout]         "id,no,name,account,password,email,phone,sex,avatar,status,login_ip,login_at,remark,create_by,create_at,update_by,update_at,del_flag".to_string()
[INFO] [stdout]                 ;
[INFO] [stdout]     } fn formats(driver_type : & rbatis :: core :: db :: DriverType) -> std ::
[INFO] [stdout]             } "update_by" =>
[INFO] [stdout]     collections :: HashMap < String, String >
[INFO] [stdout]             {
[INFO] [stdout]     {
[INFO] [stdout]                 return rbson :: to_bson(& self.update_by).unwrap_or_default()
[INFO] [stdout]         let mut m : std :: collections :: HashMap < String, String > = std ::
[INFO] [stdout]                 ;
[INFO] [stdout]         collections :: HashMap :: new() ; match driver_type
[INFO] [stdout]             } "update_at" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.update_at).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "del_flag" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.del_flag).unwrap_or_default() ; }
[INFO] [stdout]             _ => { rbson :: Bson :: Null }
[INFO] [stdout]         }
[INFO] [stdout]     } fn table_name() -> String { "sys_user".to_string() } fn table_columns()
[INFO] [stdout]     -> String
[INFO] [stdout]     {
[INFO] [stdout]         "id,no,name,account,password,email,phone,sex,avatar,status,login_ip,login_at,remark,create_by,create_at,update_by,update_at,del_flag".to_string()
[INFO] [stdout]     } fn formats(driver_type : & rbatis :: core :: db :: DriverType) -> std ::
[INFO] [stdout]     collections :: HashMap < String, String >
[INFO] [stdout]     {
[INFO] [stdout]         let mut m : std :: collections :: HashMap < String, String > = std ::
[INFO] [stdout]         collections :: HashMap :: new() ; match driver_type
[INFO] [stdout]         {
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Mysql => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Postgres => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Sqlite => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Mssql => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: None => { return m ; },
[INFO] [stdout]         }
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] ............gen impl CRUDTable end............
[INFO] [stdout]         {
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Mysql => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Postgres => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Sqlite => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Mssql => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: None => { return m ; },
[INFO] [stdout]         }
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] ............gen impl CRUDTable end............
[INFO] [stdout] ............gen impl CRUDTable:
[INFO] [stdout] ............gen impl CRUDTable:
[INFO] [stdout]  /// 菜单信息表
[INFO] [stdout] #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
[INFO] [stdout] Serialize, Deserialize, Validate,)]
[INFO] [stdout] #[serde(rename_all(serialize = "camelCase"))] pub struct SysMenu
[INFO] [stdout] {
[INFO] [stdout]     /// 主键ID
[INFO] [stdout]     pub id: Option<i64>, /// 菜单编码
[INFO] [stdout]     #[validate(length(max = 500))] pub menu_code: Option<String>,
[INFO] [stdout]     /// 菜单名称
[INFO] [stdout]     #[validate(length(max = 50))] pub menu_name: Option<String>,
[INFO] [stdout]     /// 父菜单ID
[INFO] [stdout]     pub pid: Option<i64>, /// 显示顺序
[INFO] [stdout]     pub sort: Option<i32>, /// 路由地址
[INFO] [stdout]     #[validate(length(max = 200))] pub path: Option<String>, /// 组件路径
[INFO] [stdout]     #[validate(length(max = 255))] pub component: Option<String>,
[INFO] [stdout]     /// 是否为外链（0是 1否）
[INFO] [stdout]     pub is_frame: Option<i32>, /// 是否缓存（0缓存 1不缓存）
[INFO] [stdout]     pub is_cache: Option<i32>, /// 菜单类型（M目录 C菜单 F按钮）
[INFO] [stdout]     #[validate(length(max = 1))] pub menu_type: Option<String>,
[INFO] [stdout]     /// 菜单状态（0显示 1隐藏）
[INFO] [stdout]     pub visible: Option<i8>, /// 菜单状态（0正常 1停用）
[INFO] [stdout]     pub status: Option<i8>, /// 权限标识
[INFO] [stdout]     #[validate(length(max = 100))] pub perms: Option<String>, /// 菜单图标
[INFO] [stdout]     #[validate(length(max = 100))] pub icon: Option<String>, /// 备注
[INFO] [stdout]     #[validate(length(max = 500))] pub remark: Option<String>, /// 父id集合
[INFO] [stdout]     #[validate(length(max = 500))] pub parent_ids: Option<String>, /// 排序
[INFO] [stdout]     pub tree_sort: Option<i32>, /// 排序集合
[INFO] [stdout]     #[validate(length(max = 500))] pub tree_sorts: Option<String>, /// 层级
[INFO] [stdout]     pub tree_level: Option<i32>, /// 是否子节点（0是 1否）
[INFO] [stdout]     pub tree_leaf: Option<i8>, /// 创建者
[INFO] [stdout]     pub create_by: Option<i64>, /// 创建时间
[INFO] [stdout]     pub create_at: Option<rbatis::DateTimeNative>, /// 更新者
[INFO] [stdout]     pub update_by: Option<i64>, /// 更新时间
[INFO] [stdout]     pub update_at: Option<rbatis::DateTimeNative>,
[INFO] [stdout]     /// 删除标志（0代表存在 1代表删除）
[INFO] [stdout]     pub del_flag: Option<i8>,
[INFO] [stdout] } impl rbatis :: crud :: CRUDTable for SysMenu
[INFO] [stdout] {
[INFO] [stdout]     fn get(& self, column : & str) -> rbson :: Bson
[INFO] [stdout]     {
[INFO] [stdout]         return match column
[INFO] [stdout]         {
[INFO] [stdout]             "id" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.id).unwrap_or_default() ; }
[INFO] [stdout]             "menu_code" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.menu_code).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "menu_name" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.menu_name).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "pid" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.pid).unwrap_or_default() ; }
[INFO] [stdout]             "sort" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.sort).unwrap_or_default() ; }
[INFO] [stdout]             "path" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.path).unwrap_or_default() ; }
[INFO] [stdout]             "component" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.component).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "is_frame" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.is_frame).unwrap_or_default() ; }
[INFO] [stdout]             "is_cache" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.is_cache).unwrap_or_default() ; }
[INFO] [stdout]             "menu_type" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.menu_type).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "visible" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.visible).unwrap_or_default() ; }
[INFO] [stdout]             "status" =>
[INFO] [stdout]  /// 菜单信息表
[INFO] [stdout] #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
[INFO] [stdout] Serialize, Deserialize, Validate,)]
[INFO] [stdout] #[serde(rename_all(serialize = "camelCase"))] pub struct SysMenu
[INFO] [stdout] {
[INFO] [stdout]     /// 主键ID
[INFO] [stdout]             { return rbson :: to_bson(& self.status).unwrap_or_default() ; }
[INFO] [stdout]     pub id: Option<i64>, /// 菜单编码
[INFO] [stdout]             "perms" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.perms).unwrap_or_default() ; }
[INFO] [stdout]     #[validate(length(max = 500))] pub menu_code: Option<String>,
[INFO] [stdout]             "icon" =>
[INFO] [stdout]     /// 菜单名称
[INFO] [stdout]             { return rbson :: to_bson(& self.icon).unwrap_or_default() ; }
[INFO] [stdout]     #[validate(length(max = 50))] pub menu_name: Option<String>,
[INFO] [stdout]             "remark" =>
[INFO] [stdout]     /// 父菜单ID
[INFO] [stdout]             { return rbson :: to_bson(& self.remark).unwrap_or_default() ; }
[INFO] [stdout]     pub pid: Option<i64>, /// 显示顺序
[INFO] [stdout]             "parent_ids" =>
[INFO] [stdout]     pub sort: Option<i32>, /// 路由地址
[INFO] [stdout]             {
[INFO] [stdout]     #[validate(length(max = 200))] pub path: Option<String>, /// 组件路径
[INFO] [stdout]                 return rbson :: to_bson(& self.parent_ids).unwrap_or_default()
[INFO] [stdout]     #[validate(length(max = 255))] pub component: Option<String>,
[INFO] [stdout]                 ;
[INFO] [stdout]     /// 是否为外链（0是 1否）
[INFO] [stdout]             } "tree_sort" =>
[INFO] [stdout]     pub is_frame: Option<i32>, /// 是否缓存（0缓存 1不缓存）
[INFO] [stdout]             {
[INFO] [stdout]     pub is_cache: Option<i32>, /// 菜单类型（M目录 C菜单 F按钮）
[INFO] [stdout]                 return rbson :: to_bson(& self.tree_sort).unwrap_or_default()
[INFO] [stdout]     #[validate(length(max = 1))] pub menu_type: Option<String>,
[INFO] [stdout]                 ;
[INFO] [stdout]     /// 菜单状态（0显示 1隐藏）
[INFO] [stdout]             } "tree_sorts" =>
[INFO] [stdout]     pub visible: Option<i8>, /// 菜单状态（0正常 1停用）
[INFO] [stdout]             {
[INFO] [stdout]     pub status: Option<i8>, /// 权限标识
[INFO] [stdout]                 return rbson :: to_bson(& self.tree_sorts).unwrap_or_default()
[INFO] [stdout]     #[validate(length(max = 100))] pub perms: Option<String>, /// 菜单图标
[INFO] [stdout]                 ;
[INFO] [stdout]     #[validate(length(max = 100))] pub icon: Option<String>, /// 备注
[INFO] [stdout]             } "tree_level" =>
[INFO] [stdout]     #[validate(length(max = 500))] pub remark: Option<String>, /// 父id集合
[INFO] [stdout]             {
[INFO] [stdout]     #[validate(length(max = 500))] pub parent_ids: Option<String>, /// 排序
[INFO] [stdout]                 return rbson :: to_bson(& self.tree_level).unwrap_or_default()
[INFO] [stdout]     pub tree_sort: Option<i32>, /// 排序集合
[INFO] [stdout]                 ;
[INFO] [stdout]     #[validate(length(max = 500))] pub tree_sorts: Option<String>, /// 层级
[INFO] [stdout]             } "tree_leaf" =>
[INFO] [stdout]     pub tree_level: Option<i32>, /// 是否子节点（0是 1否）
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.tree_leaf).unwrap_or_default()
[INFO] [stdout]     pub tree_leaf: Option<i8>, /// 创建者
[INFO] [stdout]                 ;
[INFO] [stdout]     pub create_by: Option<i64>, /// 创建时间
[INFO] [stdout]             } "create_by" =>
[INFO] [stdout]     pub create_at: Option<rbatis::DateTimeNative>, /// 更新者
[INFO] [stdout]             {
[INFO] [stdout]     pub update_by: Option<i64>, /// 更新时间
[INFO] [stdout]                 return rbson :: to_bson(& self.create_by).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "create_at" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.create_at).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "update_by" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.update_by).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "update_at" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.update_at).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "del_flag" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.del_flag).unwrap_or_default() ; }
[INFO] [stdout]             _ => { rbson :: Bson :: Null }
[INFO] [stdout]         }
[INFO] [stdout]     } fn table_name() -> String { "sys_menu".to_string() } fn table_columns()
[INFO] [stdout]     -> String
[INFO] [stdout]     {
[INFO] [stdout]         "id,menu_code,menu_name,pid,sort,path,component,is_frame,is_cache,menu_type,visible,status,perms,icon,remark,parent_ids,tree_sort,tree_sorts,tree_level,tree_leaf,create_by,create_at,update_by,update_at,del_flag".to_string()
[INFO] [stdout]     pub update_at: Option<rbatis::DateTimeNative>,
[INFO] [stdout]     /// 删除标志（0代表存在 1代表删除）
[INFO] [stdout]     pub del_flag: Option<i8>,
[INFO] [stdout] } impl rbatis :: crud :: CRUDTable for SysMenu
[INFO] [stdout] {
[INFO] [stdout]     } fn formats(driver_type : & rbatis :: core :: db :: DriverType) -> std ::
[INFO] [stdout]     collections :: HashMap < String, String >
[INFO] [stdout]     {
[INFO] [stdout]         let mut m : std :: collections :: HashMap < String, String > = std ::
[INFO] [stdout]         collections :: HashMap :: new() ; match driver_type
[INFO] [stdout]         {
[INFO] [stdout]     fn get(& self, column : & str) -> rbson :: Bson
[INFO] [stdout]     {
[INFO] [stdout]         return match column
[INFO] [stdout]         {
[INFO] [stdout]             "id" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.id).unwrap_or_default() ; }
[INFO] [stdout]             "menu_code" =>
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Mysql => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Postgres => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Sqlite => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Mssql => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: None => { return m ; },
[INFO] [stdout]         }
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.menu_code).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "menu_name" =>
[INFO] [stdout]             {
[INFO] [stdout] ............gen impl CRUDTable end............
[INFO] [stdout]                 return rbson :: to_bson(& self.menu_name).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "pid" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.pid).unwrap_or_default() ; }
[INFO] [stdout]             "sort" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.sort).unwrap_or_default() ; }
[INFO] [stdout]             "path" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.path).unwrap_or_default() ; }
[INFO] [stdout]             "component" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.component).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "is_frame" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.is_frame).unwrap_or_default() ; }
[INFO] [stdout]             "is_cache" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.is_cache).unwrap_or_default() ; }
[INFO] [stdout]             "menu_type" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.menu_type).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "visible" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.visible).unwrap_or_default() ; }
[INFO] [stdout]             "status" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.status).unwrap_or_default() ; }
[INFO] [stdout]             "perms" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.perms).unwrap_or_default() ; }
[INFO] [stdout]             "icon" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.icon).unwrap_or_default() ; }
[INFO] [stdout]             "remark" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.remark).unwrap_or_default() ; }
[INFO] [stdout]             "parent_ids" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.parent_ids).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "tree_sort" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.tree_sort).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "tree_sorts" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.tree_sorts).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "tree_level" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.tree_level).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "tree_leaf" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.tree_leaf).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "create_by" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.create_by).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "create_at" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.create_at).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "update_by" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.update_by).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "update_at" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.update_at).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "del_flag" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.del_flag).unwrap_or_default() ; }
[INFO] [stdout]             _ => { rbson :: Bson :: Null }
[INFO] [stdout]         }
[INFO] [stdout]     } fn table_name() -> String { "sys_menu".to_string() } fn table_columns()
[INFO] [stdout]     -> String
[INFO] [stdout]     {
[INFO] [stdout]         "id,menu_code,menu_name,pid,sort,path,component,is_frame,is_cache,menu_type,visible,status,perms,icon,remark,parent_ids,tree_sort,tree_sorts,tree_level,tree_leaf,create_by,create_at,update_by,update_at,del_flag".to_string()
[INFO] [stdout]     } fn formats(driver_type : & rbatis :: core :: db :: DriverType) -> std ::
[INFO] [stdout]     collections :: HashMap < String, String >
[INFO] [stdout]     {
[INFO] [stdout]         let mut m : std :: collections :: HashMap < String, String > = std ::
[INFO] [stdout]         collections :: HashMap :: new() ; match driver_type
[INFO] [stdout]         {
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Mysql => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Postgres => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Sqlite => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Mssql => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: None => { return m ; },
[INFO] [stdout]         }
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] ............gen impl CRUDTable end............
[INFO] [stdout] ............gen impl CRUDTable:
[INFO] [stdout]  /// 模板配置表
[INFO] [stdout] #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
[INFO] [stdout] Serialize, Deserialize, Validate,)]
[INFO] [stdout] #[serde(rename_all(serialize = "camelCase"))] pub struct GenConfigTemplate
[INFO] [stdout] {
[INFO] [stdout]     /// ID
[INFO] [stdout]     pub id: Option<i64>, /// 模板名称
[INFO] [stdout]     #[validate(length(max = 50))] pub template_name: Option<String>,
[INFO] [stdout]     /// 作者
[INFO] [stdout]     #[validate(length(max = 100))] pub function_author: Option<String>,
[INFO] [stdout]     /// 邮箱
[INFO] [stdout]     #[validate(length(max = 100))] pub function_author_email: Option<String>,
[INFO] [stdout]     /// 工作空间路径
[INFO] [stdout]     #[validate(length(max = 200))] pub workspace_path: Option<String>,
[INFO] [stdout]     /// 模块名
[INFO] [stdout]     #[validate(length(max = 30))] pub module_name: Option<String>,
[INFO] [stdout]     /// 模块包路径
[INFO] [stdout]     #[validate(length(max = 100))] pub package_name: Option<String>,
[INFO] [stdout]     /// 前端工作空间路径
[INFO] [stdout]     #[validate(length(max = 200))] pub web_workspace_path: Option<String>,
[INFO] [stdout]     /// 是否默认
[INFO] [stdout]     #[validate(length(max = 10))] pub template_default: Option<String>,
[INFO] [stdout]     /// 排序
[INFO] [stdout]     pub sort: Option<i32>, /// 状态（0正常 1 停用）
[INFO] [stdout]     pub status: Option<i8>, /// 备注
[INFO] [stdout]     #[validate(length(max = 500))] pub remark: Option<String>, /// 创建者
[INFO] [stdout]     pub create_by: Option<i64>, /// 创建时间
[INFO] [stdout]     pub create_at: Option<rbatis::DateTimeNative>, /// 更新者
[INFO] [stdout]     pub update_by: Option<i64>, /// 更新时间
[INFO] [stdout]     pub update_at: Option<rbatis::DateTimeNative>,
[INFO] [stdout]     /// 删除标志（0代表存在 1代表删除）
[INFO] [stdout]     pub del_flag: Option<i8>,
[INFO] [stdout] } impl rbatis :: crud :: CRUDTable for GenConfigTemplate
[INFO] [stdout] {
[INFO] [stdout]     fn get(& self, column : & str) -> rbson :: Bson
[INFO] [stdout]     {
[INFO] [stdout]         return match column
[INFO] [stdout]         {
[INFO] [stdout]             "id" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.id).unwrap_or_default() ; }
[INFO] [stdout]             "template_name" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.template_name).unwrap_or_default() ;
[INFO] [stdout]             } "function_author" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.function_author).unwrap_or_default() ;
[INFO] [stdout]             } "function_author_email" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.function_author_email).unwrap_or_default() ;
[INFO] [stdout]             } "workspace_path" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.workspace_path).unwrap_or_default() ;
[INFO] [stdout]             } "module_name" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.module_name).unwrap_or_default() ;
[INFO] [stdout]             } "package_name" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.package_name).unwrap_or_default() ;
[INFO] [stdout]             } "web_workspace_path" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.web_workspace_path).unwrap_or_default() ;
[INFO] [stdout]             } "template_default" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.template_default).unwrap_or_default() ;
[INFO] [stdout]             } "sort" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.sort).unwrap_or_default() ; }
[INFO] [stdout]             "status" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.status).unwrap_or_default() ; }
[INFO] [stdout]             "remark" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.remark).unwrap_or_default() ; }
[INFO] [stdout]             "create_by" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.create_by).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "create_at" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.create_at).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "update_by" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.update_by).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "update_at" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.update_at).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "del_flag" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.del_flag).unwrap_or_default() ; }
[INFO] [stdout]             _ => { rbson :: Bson :: Null }
[INFO] [stdout]         }
[INFO] [stdout]     } fn table_name() -> String { "gen_config_template".to_string() } fn
[INFO] [stdout]     table_columns() -> String
[INFO] [stdout]     {
[INFO] [stdout]         "id,template_name,function_author,function_author_email,workspace_path,module_name,package_name,web_workspace_path,template_default,sort,status,remark,create_by,create_at,update_by,update_at,del_flag".to_string()
[INFO] [stdout]     } fn formats(driver_type : & rbatis :: core :: db :: DriverType) -> std ::
[INFO] [stdout]     collections :: HashMap < String, String >
[INFO] [stdout]     {
[INFO] [stdout]         let mut m : std :: collections :: HashMap < String, String > = std ::
[INFO] [stdout]         collections :: HashMap :: new() ; match driver_type
[INFO] [stdout]         {
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Mysql => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Postgres => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Sqlite => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Mssql => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: None => { return m ; },
[INFO] [stdout] ............gen impl CRUDTable:
[INFO] [stdout]         }
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] ............gen impl CRUDTable end............
[INFO] [stdout]  /// 模板配置表
[INFO] [stdout] #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
[INFO] [stdout] Serialize, Deserialize, Validate,)]
[INFO] [stdout] #[serde(rename_all(serialize = "camelCase"))] pub struct GenConfigTemplate
[INFO] [stdout] {
[INFO] [stdout]     /// ID
[INFO] [stdout]     pub id: Option<i64>, /// 模板名称
[INFO] [stdout]     #[validate(length(max = 50))] pub template_name: Option<String>,
[INFO] [stdout]     /// 作者
[INFO] [stdout]     #[validate(length(max = 100))] pub function_author: Option<String>,
[INFO] [stdout]     /// 邮箱
[INFO] [stdout]     #[validate(length(max = 100))] pub function_author_email: Option<String>,
[INFO] [stdout]     /// 工作空间路径
[INFO] [stdout]     #[validate(length(max = 200))] pub workspace_path: Option<String>,
[INFO] [stdout]     /// 模块名
[INFO] [stdout]     #[validate(length(max = 30))] pub module_name: Option<String>,
[INFO] [stdout]     /// 模块包路径
[INFO] [stdout]     #[validate(length(max = 100))] pub package_name: Option<String>,
[INFO] [stdout]     /// 前端工作空间路径
[INFO] [stdout]     #[validate(length(max = 200))] pub web_workspace_path: Option<String>,
[INFO] [stdout]     /// 是否默认
[INFO] [stdout]     #[validate(length(max = 10))] pub template_default: Option<String>,
[INFO] [stdout]     /// 排序
[INFO] [stdout]     pub sort: Option<i32>, /// 状态（0正常 1 停用）
[INFO] [stdout]     pub status: Option<i8>, /// 备注
[INFO] [stdout]     #[validate(length(max = 500))] pub remark: Option<String>, /// 创建者
[INFO] [stdout]     pub create_by: Option<i64>, /// 创建时间
[INFO] [stdout]     pub create_at: Option<rbatis::DateTimeNative>, /// 更新者
[INFO] [stdout]     pub update_by: Option<i64>, /// 更新时间
[INFO] [stdout]     pub update_at: Option<rbatis::DateTimeNative>,
[INFO] [stdout]     /// 删除标志（0代表存在 1代表删除）
[INFO] [stdout]     pub del_flag: Option<i8>,
[INFO] [stdout] } impl rbatis :: crud :: CRUDTable for GenConfigTemplate
[INFO] [stdout] {
[INFO] [stdout]     fn get(& self, column : & str) -> rbson :: Bson
[INFO] [stdout]     {
[INFO] [stdout]         return match column
[INFO] [stdout]         {
[INFO] [stdout]             "id" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.id).unwrap_or_default() ; }
[INFO] [stdout]             "template_name" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.template_name).unwrap_or_default() ;
[INFO] [stdout]             } "function_author" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.function_author).unwrap_or_default() ;
[INFO] [stdout]             } "function_author_email" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.function_author_email).unwrap_or_default() ;
[INFO] [stdout]             } "workspace_path" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.workspace_path).unwrap_or_default() ;
[INFO] [stdout]             } "module_name" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.module_name).unwrap_or_default() ;
[INFO] [stdout]             } "package_name" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.package_name).unwrap_or_default() ;
[INFO] [stdout]             } "web_workspace_path" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.web_workspace_path).unwrap_or_default() ;
[INFO] [stdout]             } "template_default" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.template_default).unwrap_or_default() ;
[INFO] [stdout]             } "sort" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.sort).unwrap_or_default() ; }
[INFO] [stdout]             "status" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.status).unwrap_or_default() ; }
[INFO] [stdout]             "remark" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.remark).unwrap_or_default() ; }
[INFO] [stdout]             "create_by" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.create_by).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "create_at" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.create_at).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "update_by" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.update_by).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "update_at" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.update_at).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "del_flag" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.del_flag).unwrap_or_default() ; }
[INFO] [stdout]             _ => { rbson :: Bson :: Null }
[INFO] [stdout]         }
[INFO] [stdout]     } fn table_name() -> String { "gen_config_template".to_string() } fn
[INFO] [stdout]     table_columns() -> String
[INFO] [stdout]     {
[INFO] [stdout]         "id,template_name,function_author,function_author_email,workspace_path,module_name,package_name,web_workspace_path,template_default,sort,status,remark,create_by,create_at,update_by,update_at,del_flag".to_string()
[INFO] [stdout]     } fn formats(driver_type : & rbatis :: core :: db :: DriverType) -> std ::
[INFO] [stdout]     collections :: HashMap < String, String >
[INFO] [stdout]     {
[INFO] [stdout]         let mut m : std :: collections :: HashMap < String, String > = std ::
[INFO] [stdout]         collections :: HashMap :: new() ; match driver_type
[INFO] [stdout]         {
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Mysql => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Postgres => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Sqlite => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Mssql => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: None => { return m ; },
[INFO] [stdout]         }
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] ............gen impl CRUDTable end............
[INFO] [stdout] ............gen impl CRUDTable:
[INFO] [stdout]  /// 代码生成业务表
[INFO] [stdout] #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
[INFO] [stdout] Serialize, Deserialize, Validate,)]
[INFO] [stdout] #[serde(rename_all(serialize = "camelCase"))] pub struct GenTable
[INFO] [stdout] {
[INFO] [stdout]     /// 编号
[INFO] [stdout]     pub id: Option<i64>, /// 表名称
[INFO] [stdout]     #[validate(length(max = 200))] pub table_name: Option<String>,
[INFO] [stdout]     /// 表描述
[INFO] [stdout]     #[validate(length(max = 500))] pub table_comment: Option<String>,
[INFO] [stdout]     /// 关联子表的表名
[INFO] [stdout]     #[validate(length(max = 64))] pub sub_table_name: Option<String>,
[INFO] [stdout]     /// 子表关联的外键名
[INFO] [stdout]     #[validate(length(max = 64))] pub sub_table_fk_name: Option<String>,
[INFO] [stdout]     /// 实体类名称
[INFO] [stdout]     #[validate(length(max = 100))] pub class_name: Option<String>,
[INFO] [stdout]     /// 使用的模板（crud单表操作 tree树表操作）
[INFO] [stdout]     #[validate(length(max = 200))] pub tpl_category: Option<String>,
[INFO] [stdout]     /// 工作空间
[INFO] [stdout]     #[validate(length(max = 200))] pub workspace_path: Option<String>,
[INFO] [stdout]     /// 模块名
[INFO] [stdout]     #[validate(length(max = 30))] pub module_name: Option<String>,
[INFO] [stdout]     /// 包路径
[INFO] [stdout]     #[validate(length(max = 100))] pub package_name: Option<String>,
[INFO] [stdout]     /// 业务名
[INFO] [stdout]     #[validate(length(max = 30))] pub business_name: Option<String>,
[INFO] [stdout]     /// 功能名
[INFO] [stdout]     #[validate(length(max = 50))] pub function_name: Option<String>,
[INFO] [stdout]     /// 作者
[INFO] [stdout]     #[validate(length(max = 50))] pub function_author: Option<String>,
[INFO] [stdout]     /// 邮箱
[INFO] [stdout]     #[validate(length(max = 200))] pub function_author_email: Option<String>,
[INFO] [stdout]     /// 前端工作空间路径
[INFO] [stdout]     #[validate(length(max = 200))] pub web_workspace_path: Option<String>,
[INFO] [stdout]     /// 生成代码方式（0zip压缩包 1自定义路径）
[INFO] [stdout]     pub gen_type: Option<i8>, /// 扩展选项
[INFO] [stdout]     #[validate(length(max = 4000))] pub options: Option<String>, /// 备注
[INFO] [stdout]     #[validate(length(max = 500))] pub remark: Option<String>, /// 创建者
[INFO] [stdout]     pub create_by: Option<i64>, /// 创建时间
[INFO] [stdout]     pub create_at: Option<rbatis::DateTimeNative>, /// 更新者
[INFO] [stdout]     pub update_by: Option<i64>, /// 更新时间
[INFO] [stdout]     pub update_at: Option<rbatis::DateTimeNative>,
[INFO] [stdout] } impl rbatis :: crud :: CRUDTable for GenTable
[INFO] [stdout] {
[INFO] [stdout]     fn get(& self, column : & str) -> rbson :: Bson
[INFO] [stdout]     {
[INFO] [stdout]         return match column
[INFO] [stdout]         {
[INFO] [stdout]             "id" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.id).unwrap_or_default() ; }
[INFO] [stdout]             "table_name" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.table_name).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "table_comment" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.table_comment).unwrap_or_default() ;
[INFO] [stdout]             } "sub_table_name" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.sub_table_name).unwrap_or_default() ;
[INFO] [stdout]             } "sub_table_fk_name" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.sub_table_fk_name).unwrap_or_default() ;
[INFO] [stdout]             } "class_name" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.class_name).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "tpl_category" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.tpl_category).unwrap_or_default() ;
[INFO] [stdout]             } "workspace_path" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.workspace_path).unwrap_or_default() ;
[INFO] [stdout]             } "module_name" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.module_name).unwrap_or_default() ;
[INFO] [stdout]             } "package_name" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.package_name).unwrap_or_default() ;
[INFO] [stdout]             } "business_name" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.business_name).unwrap_or_default() ;
[INFO] [stdout]             } "function_name" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.function_name).unwrap_or_default() ;
[INFO] [stdout]             } "function_author" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.function_author).unwrap_or_default() ;
[INFO] [stdout]             } "function_author_email" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.function_author_email).unwrap_or_default() ;
[INFO] [stdout]             } "web_workspace_path" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.web_workspace_path).unwrap_or_default() ;
[INFO] [stdout]             } "gen_type" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.gen_type).unwrap_or_default() ; }
[INFO] [stdout]             "options" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.options).unwrap_or_default() ; }
[INFO] [stdout]             "remark" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.remark).unwrap_or_default() ; }
[INFO] [stdout]             "create_by" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.create_by).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "create_at" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.create_at).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "update_by" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.update_by).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "update_at" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.update_at).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } _ => { rbson :: Bson :: Null }
[INFO] [stdout]         }
[INFO] [stdout]     } fn table_name() -> String { "gen_table".to_string() } fn table_columns()
[INFO] [stdout]     -> String
[INFO] [stdout]     {
[INFO] [stdout]         "id,table_name,table_comment,sub_table_name,sub_table_fk_name,class_name,tpl_category,workspace_path,module_name,package_name,business_name,function_name,function_author,function_author_email,web_workspace_path,gen_type,options,remark,create_by,create_at,update_by,update_at".to_string()
[INFO] [stdout]     } fn formats(driver_type : & rbatis :: core :: db :: DriverType) -> std ::
[INFO] [stdout]     collections :: HashMap < String, String >
[INFO] [stdout]     {
[INFO] [stdout]         let mut m : std :: collections :: HashMap < String, String > = std ::
[INFO] [stdout]         collections :: HashMap :: new() ; match driver_type
[INFO] [stdout]         {
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Mysql => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Postgres => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Sqlite => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Mssql => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: None => { return m ; },
[INFO] [stdout]         }
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] ............gen impl CRUDTable end............
[INFO] [stdout] ............gen impl CRUDTable:
[INFO] [stdout]  /// 代码生成业务表
[INFO] [stdout] #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
[INFO] [stdout] Serialize, Deserialize, Validate,)]
[INFO] [stdout] #[serde(rename_all(serialize = "camelCase"))] pub struct GenTable
[INFO] [stdout] {
[INFO] [stdout]     /// 编号
[INFO] [stdout]     pub id: Option<i64>, /// 表名称
[INFO] [stdout]     #[validate(length(max = 200))] pub table_name: Option<String>,
[INFO] [stdout]     /// 表描述
[INFO] [stdout]     #[validate(length(max = 500))] pub table_comment: Option<String>,
[INFO] [stdout]     /// 关联子表的表名
[INFO] [stdout]     #[validate(length(max = 64))] pub sub_table_name: Option<String>,
[INFO] [stdout]     /// 子表关联的外键名
[INFO] [stdout]     #[validate(length(max = 64))] pub sub_table_fk_name: Option<String>,
[INFO] [stdout]     /// 实体类名称
[INFO] [stdout]     #[validate(length(max = 100))] pub class_name: Option<String>,
[INFO] [stdout]     /// 使用的模板（crud单表操作 tree树表操作）
[INFO] [stdout]     #[validate(length(max = 200))] pub tpl_category: Option<String>,
[INFO] [stdout]     /// 工作空间
[INFO] [stdout]     #[validate(length(max = 200))] pub workspace_path: Option<String>,
[INFO] [stdout]     /// 模块名
[INFO] [stdout]     #[validate(length(max = 30))] pub module_name: Option<String>,
[INFO] [stdout]     /// 包路径
[INFO] [stdout]     #[validate(length(max = 100))] pub package_name: Option<String>,
[INFO] [stdout]     /// 业务名
[INFO] [stdout]     #[validate(length(max = 30))] pub business_name: Option<String>,
[INFO] [stdout]     /// 功能名
[INFO] [stdout]     #[validate(length(max = 50))] pub function_name: Option<String>,
[INFO] [stdout]     /// 作者
[INFO] [stdout]     #[validate(length(max = 50))] pub function_author: Option<String>,
[INFO] [stdout]     /// 邮箱
[INFO] [stdout]     #[validate(length(max = 200))] pub function_author_email: Option<String>,
[INFO] [stdout]     /// 前端工作空间路径
[INFO] [stdout]     #[validate(length(max = 200))] pub web_workspace_path: Option<String>,
[INFO] [stdout]     /// 生成代码方式（0zip压缩包 1自定义路径）
[INFO] [stdout]     pub gen_type: Option<i8>, /// 扩展选项
[INFO] [stdout]     #[validate(length(max = 4000))] pub options: Option<String>, /// 备注
[INFO] [stdout]     #[validate(length(max = 500))] pub remark: Option<String>, /// 创建者
[INFO] [stdout]     pub create_by: Option<i64>, /// 创建时间
[INFO] [stdout]     pub create_at: Option<rbatis::DateTimeNative>, /// 更新者
[INFO] [stdout]     pub update_by: Option<i64>, /// 更新时间
[INFO] [stdout]     pub update_at: Option<rbatis::DateTimeNative>,
[INFO] [stdout] } impl rbatis :: crud :: CRUDTable for GenTable
[INFO] [stdout] {
[INFO] [stdout]     fn get(& self, column : & str) -> rbson :: Bson
[INFO] [stdout]     {
[INFO] [stdout]         return match column
[INFO] [stdout]         {
[INFO] [stdout]             "id" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.id).unwrap_or_default() ; }
[INFO] [stdout]             "table_name" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.table_name).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "table_comment" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.table_comment).unwrap_or_default() ;
[INFO] [stdout]             } "sub_table_name" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.sub_table_name).unwrap_or_default() ;
[INFO] [stdout]             } "sub_table_fk_name" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.sub_table_fk_name).unwrap_or_default() ;
[INFO] [stdout]             } "class_name" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.class_name).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "tpl_category" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.tpl_category).unwrap_or_default() ;
[INFO] [stdout]             } "workspace_path" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.workspace_path).unwrap_or_default() ;
[INFO] [stdout]             } "module_name" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.module_name).unwrap_or_default() ;
[INFO] [stdout]             } "package_name" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.package_name).unwrap_or_default() ;
[INFO] [stdout]             } "business_name" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.business_name).unwrap_or_default() ;
[INFO] [stdout]             } "function_name" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.function_name).unwrap_or_default() ;
[INFO] [stdout]             } "function_author" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.function_author).unwrap_or_default() ;
[INFO] [stdout]             } "function_author_email" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.function_author_email).unwrap_or_default() ;
[INFO] [stdout]             } "web_workspace_path" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.web_workspace_path).unwrap_or_default() ;
[INFO] [stdout]             } "gen_type" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.gen_type).unwrap_or_default() ; }
[INFO] [stdout]             "options" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.options).unwrap_or_default() ; }
[INFO] [stdout]             "remark" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.remark).unwrap_or_default() ; }
[INFO] [stdout]             "create_by" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.create_by).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "create_at" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.create_at).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "update_by" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.update_by).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "update_at" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.update_at).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } _ => { rbson :: Bson :: Null }
[INFO] [stdout]         }
[INFO] [stdout]     } fn table_name() -> String { "gen_table".to_string() } fn table_columns()
[INFO] [stdout]     -> String
[INFO] [stdout]     {
[INFO] [stdout]         "id,table_name,table_comment,sub_table_name,sub_table_fk_name,class_name,tpl_category,workspace_path,module_name,package_name,business_name,function_name,function_author,function_author_email,web_workspace_path,gen_type,options,remark,create_by,create_at,update_by,update_at".to_string()
[INFO] [stdout]     } fn formats(driver_type : & rbatis :: core :: db :: DriverType) -> std ::
[INFO] [stdout]     collections :: HashMap < String, String >
[INFO] [stdout]     {
[INFO] [stdout]         let mut m : std :: collections :: HashMap < String, String > = std ::
[INFO] [stdout]         collections :: HashMap :: new() ; match driver_type
[INFO] [stdout]         {
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Mysql => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Postgres => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Sqlite => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Mssql => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: None => { return m ; },
[INFO] [stdout]         }
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] ............gen impl CRUDTable end............
[INFO] [stdout] ............gen impl CRUDTable:
[INFO] [stdout]  /// 代码生成业务表字段
[INFO] [stdout] #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
[INFO] [stdout] Serialize, Deserialize, Validate,)]
[INFO] [stdout] #[serde(rename_all(serialize = "camelCase"))] pub struct GenTableColumn
[INFO] [stdout] {
[INFO] [stdout]     /// 编号
[INFO] [stdout]     pub id: Option<i64>, /// 归属表编号
[INFO] [stdout]     #[validate(length(max = 64))] pub table_id: Option<String>, /// 列名称
[INFO] [stdout]     #[validate(length(max = 200))] pub column_name: Option<String>,
[INFO] [stdout]     /// 列描述
[INFO] [stdout]     #[validate(length(max = 500))] pub column_comment: Option<String>,
[INFO] [stdout]     /// 列类型
[INFO] [stdout]     #[validate(length(max = 100))] pub column_type: Option<String>,
[INFO] [stdout]     /// JAVA类型
[INFO] [stdout]     #[validate(length(max = 500))] pub java_type: Option<String>,
[INFO] [stdout]     /// JAVA字段名
[INFO] [stdout]     #[validate(length(max = 200))] pub java_field: Option<String>,
[INFO] [stdout]     /// 是否主键（1是）
[INFO] [stdout]     #[validate(length(max = 10))] pub is_pk: Option<String>,
[INFO] [stdout]     /// 是否自增（1是）
[INFO] [stdout]     #[validate(length(max = 10))] pub is_increment: Option<String>,
[INFO] [stdout]     /// 是否必填（1是）
[INFO] [stdout]     #[validate(length(max = 10))] pub is_required: Option<String>,
[INFO] [stdout]     /// 是否为插入字段（1是）
[INFO] [stdout]     #[validate(length(max = 10))] pub is_insert: Option<String>,
[INFO] [stdout]     /// 是否编辑字段（1是）
[INFO] [stdout]     #[validate(length(max = 10))] pub is_edit: Option<String>,
[INFO] [stdout]     /// 是否列表字段（1是）
[INFO] [stdout]     #[validate(length(max = 10))] pub is_list: Option<String>,
[INFO] [stdout]     /// 是否查询字段（1是）
[INFO] [stdout]     #[validate(length(max = 10))] pub is_query: Option<String>,
[INFO] [stdout]     /// 是否唯一性
[INFO] [stdout]     #[validate(length(max = 10))] pub is_unique: Option<String>,
[INFO] [stdout]     /// 是否记录日志
[INFO] [stdout]     #[validate(length(max = 10))] pub is_log: Option<String>, /// 是否排序
[INFO] [stdout]     #[validate(length(max = 10))] pub is_column_sort: Option<String>,
[INFO] [stdout]     /// 新行
[INFO] [stdout]     #[validate(length(max = 10))] pub is_new_row: Option<String>, /// 列数
[INFO] [stdout]     pub col_span: Option<i32>, /// 对齐方式
[INFO] [stdout]     #[validate(length(max = 10))] pub align_type: Option<String>,
[INFO] [stdout]     /// 查询方式（等于、不等于、大于、小于、范围）
[INFO] [stdout]     #[validate(length(max = 200))] pub query_type: Option<String>,
[INFO] [stdout]     /// 显示类型（文本框、文本域、下拉框、复选框、单选框、日期控件）
[INFO] [stdout]     #[validate(length(max = 200))] pub html_type: Option<String>,
[INFO] [stdout]     /// 字典类型
[INFO] [stdout]     #[validate(length(max = 200))] pub dict_type: Option<String>,
[INFO] [stdout]     /// 字段校验
[INFO] [stdout]     #[validate(length(max = 100))] pub col_check: Option<String>, /// 排序
[INFO] [stdout]     pub sort: Option<i32>, /// 创建者
[INFO] [stdout]     pub create_by: Option<i64>, /// 创建时间
[INFO] [stdout]     pub create_at: Option<rbatis::DateTimeNative>, /// 更新者
[INFO] [stdout]     pub update_by: Option<i64>, /// 更新时间
[INFO] [stdout]     pub update_at: Option<rbatis::DateTimeNative>,
[INFO] [stdout] } impl rbatis :: crud :: CRUDTable for GenTableColumn
[INFO] [stdout] {
[INFO] [stdout]     fn get(& self, column : & str) -> rbson :: Bson
[INFO] [stdout]     {
[INFO] [stdout]         return match column
[INFO] [stdout]         {
[INFO] [stdout]             "id" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.id).unwrap_or_default() ; }
[INFO] [stdout]             "table_id" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.table_id).unwrap_or_default() ; }
[INFO] [stdout]             "column_name" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.column_name).unwrap_or_default() ;
[INFO] [stdout]             } "column_comment" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.column_comment).unwrap_or_default() ;
[INFO] [stdout]             } "column_type" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.column_type).unwrap_or_default() ;
[INFO] [stdout]             } "java_type" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.java_type).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "java_field" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.java_field).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "is_pk" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.is_pk).unwrap_or_default() ; }
[INFO] [stdout]             "is_increment" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.is_increment).unwrap_or_default() ;
[INFO] [stdout]             } "is_required" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.is_required).unwrap_or_default() ;
[INFO] [stdout]             } "is_insert" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.is_insert).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "is_edit" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.is_edit).unwrap_or_default() ; }
[INFO] [stdout]             "is_list" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.is_list).unwrap_or_default() ; }
[INFO] [stdout]             "is_query" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.is_query).unwrap_or_default() ; }
[INFO] [stdout]             "is_unique" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.is_unique).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "is_log" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.is_log).unwrap_or_default() ; }
[INFO] [stdout]             "is_column_sort" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.is_column_sort).unwrap_or_default() ;
[INFO] [stdout]             } "is_new_row" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.is_new_row).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "col_span" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.col_span).unwrap_or_default() ; }
[INFO] [stdout]             "align_type" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.align_type).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "query_type" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.query_type).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "html_type" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.html_type).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "dict_type" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.dict_type).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "col_check" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.col_check).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "sort" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.sort).unwrap_or_default() ; }
[INFO] [stdout]             "create_by" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.create_by).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "create_at" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.create_at).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "update_by" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.update_by).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "update_at" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.update_at).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } _ => { rbson :: Bson :: Null }
[INFO] [stdout]         }
[INFO] [stdout]     } fn table_name() -> String { "gen_table_column".to_string() } fn
[INFO] [stdout]     table_columns() -> String
[INFO] [stdout]     {
[INFO] [stdout]         "id,table_id,column_name,column_comment,column_type,java_type,java_field,is_pk,is_increment,is_required,is_insert,is_edit,is_list,is_query,is_unique,is_log,is_column_sort,is_new_row,col_span,align_type,query_type,html_type,dict_type,col_check,sort,create_by,create_at,update_by,update_at".to_string()
[INFO] [stdout]     } fn formats(driver_type : & rbatis :: core :: db :: DriverType) -> std ::
[INFO] [stdout]     collections :: HashMap < String, String >
[INFO] [stdout]     {
[INFO] [stdout]         let mut m : std :: collections :: HashMap < String, String > = std ::
[INFO] [stdout]         collections :: HashMap :: new() ; match driver_type
[INFO] [stdout]         {
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Mysql => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Postgres => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Sqlite => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Mssql => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: None => { return m ; },
[INFO] [stdout]         }
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] ............gen impl CRUDTable end............
[INFO] [stdout] ............gen impl CRUDTable:
[INFO] [stdout]  /// 代码生成业务表字段
[INFO] [stdout] #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
[INFO] [stdout] Serialize, Deserialize, Validate,)]
[INFO] [stdout] #[serde(rename_all(serialize = "camelCase"))] pub struct GenTableColumn
[INFO] [stdout] {
[INFO] [stdout]     /// 编号
[INFO] [stdout]     pub id: Option<i64>, /// 归属表编号
[INFO] [stdout]     #[validate(length(max = 64))] pub table_id: Option<String>, /// 列名称
[INFO] [stdout]     #[validate(length(max = 200))] pub column_name: Option<String>,
[INFO] [stdout]     /// 列描述
[INFO] [stdout]     #[validate(length(max = 500))] pub column_comment: Option<String>,
[INFO] [stdout]     /// 列类型
[INFO] [stdout]     #[validate(length(max = 100))] pub column_type: Option<String>,
[INFO] [stdout]     /// JAVA类型
[INFO] [stdout]     #[validate(length(max = 500))] pub java_type: Option<String>,
[INFO] [stdout]     /// JAVA字段名
[INFO] [stdout]     #[validate(length(max = 200))] pub java_field: Option<String>,
[INFO] [stdout]     /// 是否主键（1是）
[INFO] [stdout]     #[validate(length(max = 10))] pub is_pk: Option<String>,
[INFO] [stdout]     /// 是否自增（1是）
[INFO] [stdout]     #[validate(length(max = 10))] pub is_increment: Option<String>,
[INFO] [stdout]     /// 是否必填（1是）
[INFO] [stdout]     #[validate(length(max = 10))] pub is_required: Option<String>,
[INFO] [stdout]     /// 是否为插入字段（1是）
[INFO] [stdout]     #[validate(length(max = 10))] pub is_insert: Option<String>,
[INFO] [stdout]     /// 是否编辑字段（1是）
[INFO] [stdout]     #[validate(length(max = 10))] pub is_edit: Option<String>,
[INFO] [stdout]     /// 是否列表字段（1是）
[INFO] [stdout]     #[validate(length(max = 10))] pub is_list: Option<String>,
[INFO] [stdout]     /// 是否查询字段（1是）
[INFO] [stdout]     #[validate(length(max = 10))] pub is_query: Option<String>,
[INFO] [stdout]     /// 是否唯一性
[INFO] [stdout]     #[validate(length(max = 10))] pub is_unique: Option<String>,
[INFO] [stdout]     /// 是否记录日志
[INFO] [stdout]     #[validate(length(max = 10))] pub is_log: Option<String>, /// 是否排序
[INFO] [stdout]     #[validate(length(max = 10))] pub is_column_sort: Option<String>,
[INFO] [stdout]     /// 新行
[INFO] [stdout]     #[validate(length(max = 10))] pub is_new_row: Option<String>, /// 列数
[INFO] [stdout]     pub col_span: Option<i32>, /// 对齐方式
[INFO] [stdout]     #[validate(length(max = 10))] pub align_type: Option<String>,
[INFO] [stdout]     /// 查询方式（等于、不等于、大于、小于、范围）
[INFO] [stdout]     #[validate(length(max = 200))] pub query_type: Option<String>,
[INFO] [stdout]     /// 显示类型（文本框、文本域、下拉框、复选框、单选框、日期控件）
[INFO] [stdout]     #[validate(length(max = 200))] pub html_type: Option<String>,
[INFO] [stdout]     /// 字典类型
[INFO] [stdout]     #[validate(length(max = 200))] pub dict_type: Option<String>,
[INFO] [stdout]     /// 字段校验
[INFO] [stdout]     #[validate(length(max = 100))] pub col_check: Option<String>, /// 排序
[INFO] [stdout]     pub sort: Option<i32>, /// 创建者
[INFO] [stdout]     pub create_by: Option<i64>, /// 创建时间
[INFO] [stdout]     pub create_at: Option<rbatis::DateTimeNative>, /// 更新者
[INFO] [stdout]     pub update_by: Option<i64>, /// 更新时间
[INFO] [stdout]     pub update_at: Option<rbatis::DateTimeNative>,
[INFO] [stdout] } impl rbatis :: crud :: CRUDTable for GenTableColumn
[INFO] [stdout] {
[INFO] [stdout]     fn get(& self, column : & str) -> rbson :: Bson
[INFO] [stdout]     {
[INFO] [stdout]         return match column
[INFO] [stdout]         {
[INFO] [stdout]             "id" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.id).unwrap_or_default() ; }
[INFO] [stdout]             "table_id" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.table_id).unwrap_or_default() ; }
[INFO] [stdout]             "column_name" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.column_name).unwrap_or_default() ;
[INFO] [stdout]             } "column_comment" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.column_comment).unwrap_or_default() ;
[INFO] [stdout]             } "column_type" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.column_type).unwrap_or_default() ;
[INFO] [stdout]             } "java_type" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.java_type).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "java_field" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.java_field).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "is_pk" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.is_pk).unwrap_or_default() ; }
[INFO] [stdout]             "is_increment" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.is_increment).unwrap_or_default() ;
[INFO] [stdout]             } "is_required" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.is_required).unwrap_or_default() ;
[INFO] [stdout]             } "is_insert" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.is_insert).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "is_edit" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.is_edit).unwrap_or_default() ; }
[INFO] [stdout]             "is_list" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.is_list).unwrap_or_default() ; }
[INFO] [stdout]             "is_query" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.is_query).unwrap_or_default() ; }
[INFO] [stdout]             "is_unique" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.is_unique).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "is_log" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.is_log).unwrap_or_default() ; }
[INFO] [stdout]             "is_column_sort" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.is_column_sort).unwrap_or_default() ;
[INFO] [stdout]             } "is_new_row" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.is_new_row).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "col_span" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.col_span).unwrap_or_default() ; }
[INFO] [stdout]             "align_type" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.align_type).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "query_type" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.query_type).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "html_type" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.html_type).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "dict_type" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.dict_type).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "col_check" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.col_check).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "sort" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.sort).unwrap_or_default() ; }
[INFO] [stdout]             "create_by" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.create_by).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "create_at" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.create_at).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "update_by" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.update_by).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "update_at" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.update_at).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } _ => { rbson :: Bson :: Null }
[INFO] [stdout]         }
[INFO] [stdout]     } fn table_name() -> String { "gen_table_column".to_string() } fn
[INFO] [stdout]     table_columns() -> String
[INFO] [stdout]     {
[INFO] [stdout]         "id,table_id,column_name,column_comment,column_type,java_type,java_field,is_pk,is_increment,is_required,is_insert,is_edit,is_list,is_query,is_unique,is_log,is_column_sort,is_new_row,col_span,align_type,query_type,html_type,dict_type,col_check,sort,create_by,create_at,update_by,update_at".to_string()
[INFO] [stdout]     } fn formats(driver_type : & rbatis :: core :: db :: DriverType) -> std ::
[INFO] [stdout]     collections :: HashMap < String, String >
[INFO] [stdout]     {
[INFO] [stdout]         let mut m : std :: collections :: HashMap < String, String > = std ::
[INFO] [stdout]         collections :: HashMap :: new() ; match driver_type
[INFO] [stdout]         {
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Mysql => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Postgres => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Sqlite => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Mssql => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: None => { return m ; },
[INFO] [stdout]         }
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] ............gen impl CRUDTable end............
[INFO] [stdout] ............gen impl CRUDTable:
[INFO] [stdout]  /// 参数配置表
[INFO] [stdout] #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
[INFO] [stdout] Serialize, Deserialize, Validate,)]
[INFO] [stdout] #[serde(rename_all(serialize = "camelCase"))] pub struct SysConfig
[INFO] [stdout] {
[INFO] [stdout]     /// ID
[INFO] [stdout]     pub id: Option<i64>, /// 参数名称
[INFO] [stdout]     #[validate(length(max = 100))] pub config_name: Option<String>,
[INFO] [stdout]     /// 参数键名
[INFO] [stdout]     #[validate(length(max = 100))] pub config_key: Option<String>,
[INFO] [stdout]     /// 参数键值
[INFO] [stdout]     #[validate(length(max = 500))] pub config_value: Option<String>,
[INFO] [stdout]     /// 系统内置（0否 1是）
[INFO] [stdout]     pub config_type: Option<i8>, /// 备注
[INFO] [stdout]     #[validate(length(max = 500))] pub remark: Option<String>, /// 创建者
[INFO] [stdout]     pub create_by: Option<i64>, /// 创建时间
[INFO] [stdout]     pub create_at: Option<rbatis::DateTimeNative>, /// 更新者
[INFO] [stdout]     pub update_by: Option<i64>, /// 更新时间
[INFO] [stdout]     pub update_at: Option<rbatis::DateTimeNative>,
[INFO] [stdout]     /// 删除标志（0代表存在 1代表删除）
[INFO] [stdout]     pub del_flag: Option<i8>,
[INFO] [stdout] } impl rbatis :: crud :: CRUDTable for SysConfig
[INFO] [stdout] {
[INFO] [stdout]     fn get(& self, column : & str) -> rbson :: Bson
[INFO] [stdout]     {
[INFO] [stdout]         return match column
[INFO] [stdout]         {
[INFO] [stdout]             "id" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.id).unwrap_or_default() ; }
[INFO] [stdout]             "config_name" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.config_name).unwrap_or_default() ;
[INFO] [stdout]             } "config_key" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.config_key).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "config_value" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.config_value).unwrap_or_default() ;
[INFO] [stdout]             } "config_type" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.config_type).unwrap_or_default() ;
[INFO] [stdout]             } "remark" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.remark).unwrap_or_default() ; }
[INFO] [stdout]             "create_by" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.create_by).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "create_at" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.create_at).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "update_by" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.update_by).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "update_at" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.update_at).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "del_flag" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.del_flag).unwrap_or_default() ; }
[INFO] [stdout]             _ => { rbson :: Bson :: Null }
[INFO] [stdout]         }
[INFO] [stdout]     } fn table_name() -> String { "sys_config".to_string() } fn
[INFO] [stdout]     table_columns() -> String
[INFO] [stdout]     {
[INFO] [stdout]         "id,config_name,config_key,config_value,config_type,remark,create_by,create_at,update_by,update_at,del_flag".to_string()
[INFO] [stdout]     } fn formats(driver_type : & rbatis :: core :: db :: DriverType) -> std ::
[INFO] [stdout]     collections :: HashMap < String, String >
[INFO] [stdout]     {
[INFO] [stdout]         let mut m : std :: collections :: HashMap < String, String > = std ::
[INFO] [stdout]         collections :: HashMap :: new() ; match driver_type
[INFO] [stdout]         {
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Mysql => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Postgres => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Sqlite => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Mssql => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: None => { return m ; },
[INFO] [stdout]         }
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] ............gen impl CRUDTable end............
[INFO] [stdout] ............gen impl CRUDTable:
[INFO] [stdout]  /// 参数配置表
[INFO] [stdout] #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
[INFO] [stdout] Serialize, Deserialize, Validate,)]
[INFO] [stdout] #[serde(rename_all(serialize = "camelCase"))] pub struct SysConfig
[INFO] [stdout] {
[INFO] [stdout]     /// ID
[INFO] [stdout]     pub id: Option<i64>, /// 参数名称
[INFO] [stdout]     #[validate(length(max = 100))] pub config_name: Option<String>,
[INFO] [stdout]     /// 参数键名
[INFO] [stdout]     #[validate(length(max = 100))] pub config_key: Option<String>,
[INFO] [stdout]     /// 参数键值
[INFO] [stdout]     #[validate(length(max = 500))] pub config_value: Option<String>,
[INFO] [stdout]     /// 系统内置（0否 1是）
[INFO] [stdout]     pub config_type: Option<i8>, /// 备注
[INFO] [stdout]     #[validate(length(max = 500))] pub remark: Option<String>, /// 创建者
[INFO] [stdout]     pub create_by: Option<i64>, /// 创建时间
[INFO] [stdout]     pub create_at: Option<rbatis::DateTimeNative>, /// 更新者
[INFO] [stdout]     pub update_by: Option<i64>, /// 更新时间
[INFO] [stdout]     pub update_at: Option<rbatis::DateTimeNative>,
[INFO] [stdout]     /// 删除标志（0代表存在 1代表删除）
[INFO] [stdout]     pub del_flag: Option<i8>,
[INFO] [stdout] } impl rbatis :: crud :: CRUDTable for SysConfig
[INFO] [stdout] {
[INFO] [stdout]     fn get(& self, column : & str) -> rbson :: Bson
[INFO] [stdout]     {
[INFO] [stdout]         return match column
[INFO] [stdout]         {
[INFO] [stdout]             "id" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.id).unwrap_or_default() ; }
[INFO] [stdout]             "config_name" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.config_name).unwrap_or_default() ;
[INFO] [stdout]             } "config_key" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.config_key).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "config_value" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.config_value).unwrap_or_default() ;
[INFO] [stdout]             } "config_type" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.config_type).unwrap_or_default() ;
[INFO] [stdout]             } "remark" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.remark).unwrap_or_default() ; }
[INFO] [stdout]             "create_by" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.create_by).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "create_at" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.create_at).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "update_by" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.update_by).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "update_at" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.update_at).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "del_flag" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.del_flag).unwrap_or_default() ; }
[INFO] [stdout]             _ => { rbson :: Bson :: Null }
[INFO] [stdout]         }
[INFO] [stdout]     } fn table_name() -> String { "sys_config".to_string() } fn
[INFO] [stdout]     table_columns() -> String
[INFO] [stdout]     {
[INFO] [stdout]         "id,config_name,config_key,config_value,config_type,remark,create_by,create_at,update_by,update_at,del_flag".to_string()
[INFO] [stdout]     } fn formats(driver_type : & rbatis :: core :: db :: DriverType) -> std ::
[INFO] [stdout]     collections :: HashMap < String, String >
[INFO] [stdout]     {
[INFO] [stdout]         let mut m : std :: collections :: HashMap < String, String > = std ::
[INFO] [stdout]         collections :: HashMap :: new() ; match driver_type
[INFO] [stdout]         {
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Mysql => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Postgres => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Sqlite => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Mssql => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: None => { return m ; },
[INFO] [stdout]         }
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] ............gen impl CRUDTable end............
[INFO] [stdout] ............gen impl CRUDTable:
[INFO] [stdout]  /// 系统访问记录
[INFO] [stdout] #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
[INFO] [stdout] Serialize, Deserialize, Validate,)]
[INFO] [stdout] #[serde(rename_all(serialize = "camelCase"))] pub struct SysLoginLog
[INFO] [stdout] {
[INFO] [stdout]     /// ID
[INFO] [stdout]     pub id: Option<i64>, /// 用户账号
[INFO] [stdout]     #[validate(length(max = 50))] pub account: Option<String>,
[INFO] [stdout]     /// 登录IP地址
[INFO] [stdout]     #[validate(length(max = 128))] pub ip: Option<String>, /// 登录地点
[INFO] [stdout]     #[validate(length(max = 255))] pub login_location: Option<String>,
[INFO] [stdout]     /// 浏览器类型
[INFO] [stdout]     #[validate(length(max = 50))] pub browser: Option<String>,
[INFO] [stdout]     /// 操作系统
[INFO] [stdout]     #[validate(length(max = 50))] pub os: Option<String>,
[INFO] [stdout]     /// 登录状态（0成功 1失败）
[INFO] [stdout]     pub status: Option<i8>, /// 提示消息
[INFO] [stdout]     #[validate(length(max = 255))] pub msg: Option<String>, /// 访问时间
[INFO] [stdout]     pub login_at: Option<rbatis::DateTimeNative>, /// 备注
[INFO] [stdout]     #[validate(length(max = 500))] pub remark: Option<String>,
[INFO] [stdout]     /// 删除标志（0代表存在 1代表删除）
[INFO] [stdout]     pub del_flag: Option<i8>,
[INFO] [stdout] } impl rbatis :: crud :: CRUDTable for SysLoginLog
[INFO] [stdout] {
[INFO] [stdout]     fn get(& self, column : & str) -> rbson :: Bson
[INFO] [stdout]     {
[INFO] [stdout]         return match column
[INFO] [stdout]         {
[INFO] [stdout]             "id" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.id).unwrap_or_default() ; }
[INFO] [stdout]             "account" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.account).unwrap_or_default() ; }
[INFO] [stdout]             "ip" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.ip).unwrap_or_default() ; }
[INFO] [stdout]             "login_location" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.login_location).unwrap_or_default() ;
[INFO] [stdout]             } "browser" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.browser).unwrap_or_default() ; }
[INFO] [stdout]             "os" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.os).unwrap_or_default() ; }
[INFO] [stdout]             "status" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.status).unwrap_or_default() ; }
[INFO] [stdout]             "msg" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.msg).unwrap_or_default() ; }
[INFO] [stdout]             "login_at" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.login_at).unwrap_or_default() ; }
[INFO] [stdout]             "remark" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.remark).unwrap_or_default() ; }
[INFO] [stdout]             "del_flag" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.del_flag).unwrap_or_default() ; }
[INFO] [stdout]             _ => { rbson :: Bson :: Null }
[INFO] [stdout]         }
[INFO] [stdout]     } fn table_name() -> String { "sys_login_log".to_string() } fn
[INFO] [stdout]     table_columns() -> String
[INFO] [stdout]     {
[INFO] [stdout]         "id,account,ip,login_location,browser,os,status,msg,login_at,remark,del_flag".to_string()
[INFO] [stdout]     } fn formats(driver_type : & rbatis :: core :: db :: DriverType) -> std ::
[INFO] [stdout]     collections :: HashMap < String, String >
[INFO] [stdout]     {
[INFO] [stdout]         let mut m : std :: collections :: HashMap < String, String > = std ::
[INFO] [stdout]         collections :: HashMap :: new() ; match driver_type
[INFO] [stdout]         {
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Mysql => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Postgres => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Sqlite => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Mssql => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: None => { return m ; },
[INFO] [stdout]         }
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] ............gen impl CRUDTable end............
[INFO] [stdout] ............gen impl CRUDTable:
[INFO] [stdout]  /// 系统访问记录
[INFO] [stdout] #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
[INFO] [stdout] Serialize, Deserialize, Validate,)]
[INFO] [stdout] #[serde(rename_all(serialize = "camelCase"))] pub struct SysLoginLog
[INFO] [stdout] {
[INFO] [stdout]     /// ID
[INFO] [stdout]     pub id: Option<i64>, /// 用户账号
[INFO] [stdout]     #[validate(length(max = 50))] pub account: Option<String>,
[INFO] [stdout]     /// 登录IP地址
[INFO] [stdout]     #[validate(length(max = 128))] pub ip: Option<String>, /// 登录地点
[INFO] [stdout]     #[validate(length(max = 255))] pub login_location: Option<String>,
[INFO] [stdout]     /// 浏览器类型
[INFO] [stdout]     #[validate(length(max = 50))] pub browser: Option<String>,
[INFO] [stdout]     /// 操作系统
[INFO] [stdout]     #[validate(length(max = 50))] pub os: Option<String>,
[INFO] [stdout]     /// 登录状态（0成功 1失败）
[INFO] [stdout]     pub status: Option<i8>, /// 提示消息
[INFO] [stdout]     #[validate(length(max = 255))] pub msg: Option<String>, /// 访问时间
[INFO] [stdout]     pub login_at: Option<rbatis::DateTimeNative>, /// 备注
[INFO] [stdout]     #[validate(length(max = 500))] pub remark: Option<String>,
[INFO] [stdout]     /// 删除标志（0代表存在 1代表删除）
[INFO] [stdout]     pub del_flag: Option<i8>,
[INFO] [stdout] } impl rbatis :: crud :: CRUDTable for SysLoginLog
[INFO] [stdout] {
[INFO] [stdout]     fn get(& self, column : & str) -> rbson :: Bson
[INFO] [stdout]     {
[INFO] [stdout]         return match column
[INFO] [stdout]         {
[INFO] [stdout]             "id" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.id).unwrap_or_default() ; }
[INFO] [stdout]             "account" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.account).unwrap_or_default() ; }
[INFO] [stdout]             "ip" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.ip).unwrap_or_default() ; }
[INFO] [stdout]             "login_location" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.login_location).unwrap_or_default() ;
[INFO] [stdout]             } "browser" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.browser).unwrap_or_default() ; }
[INFO] [stdout]             "os" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.os).unwrap_or_default() ; }
[INFO] [stdout]             "status" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.status).unwrap_or_default() ; }
[INFO] [stdout]             "msg" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.msg).unwrap_or_default() ; }
[INFO] [stdout]             "login_at" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.login_at).unwrap_or_default() ; }
[INFO] [stdout]             "remark" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.remark).unwrap_or_default() ; }
[INFO] [stdout]             "del_flag" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.del_flag).unwrap_or_default() ; }
[INFO] [stdout]             _ => { rbson :: Bson :: Null }
[INFO] [stdout]         }
[INFO] [stdout]     } fn table_name() -> String { "sys_login_log".to_string() } fn
[INFO] [stdout]     table_columns() -> String
[INFO] [stdout]     {
[INFO] [stdout]         "id,account,ip,login_location,browser,os,status,msg,login_at,remark,del_flag".to_string()
[INFO] [stdout]     } fn formats(driver_type : & rbatis :: core :: db :: DriverType) -> std ::
[INFO] [stdout]     collections :: HashMap < String, String >
[INFO] [stdout]     {
[INFO] [stdout]         let mut m : std :: collections :: HashMap < String, String > = std ::
[INFO] [stdout]         collections :: HashMap :: new() ; match driver_type
[INFO] [stdout]         {
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Mysql => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Postgres => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Sqlite => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Mssql => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: None => { return m ; },
[INFO] [stdout]         }
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] ............gen impl CRUDTable end............
[INFO] [stdout] ............gen impl CRUDTable:
[INFO] [stdout]  /// 字典类型表
[INFO] [stdout] #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
[INFO] [stdout] Serialize, Deserialize, Validate,)]
[INFO] [stdout] #[serde(rename_all(serialize = "camelCase"))] pub struct SysDictType
[INFO] [stdout] {
[INFO] [stdout]     /// ID
[INFO] [stdout]     pub id: Option<i64>, /// 字典名称
[INFO] [stdout]     #[validate(length(max = 100))] pub name: Option<String>, /// 字典类型
[INFO] [stdout]     #[validate(length(max = 100))] pub r#type: Option<String>,
[INFO] [stdout]     /// 状态（0正常 1停用）
[INFO] [stdout]     pub status: Option<i8>, /// 备注
[INFO] [stdout]     #[validate(length(max = 500))] pub remark: Option<String>, /// 创建者
[INFO] [stdout]     pub create_by: Option<i64>, /// 创建时间
[INFO] [stdout]     pub create_at: Option<rbatis::DateTimeNative>, /// 更新者
[INFO] [stdout]     pub update_by: Option<i64>, /// 更新时间
[INFO] [stdout]     pub update_at: Option<rbatis::DateTimeNative>,
[INFO] [stdout]     /// 删除标志（0代表存在 1代表删除）
[INFO] [stdout]     pub del_flag: Option<i8>,
[INFO] [stdout] } impl rbatis :: crud :: CRUDTable for SysDictType
[INFO] [stdout] {
[INFO] [stdout]     fn get(& self, column : & str) -> rbson :: Bson
[INFO] [stdout]     {
[INFO] [stdout]         return match column
[INFO] [stdout]         {
[INFO] [stdout]             "id" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.id).unwrap_or_default() ; }
[INFO] [stdout]             "name" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.name).unwrap_or_default() ; }
[INFO] [stdout]             "r#type" | "type" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.r#type).unwrap_or_default() ; }
[INFO] [stdout]             "status" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.status).unwrap_or_default() ; }
[INFO] [stdout]             "remark" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.remark).unwrap_or_default() ; }
[INFO] [stdout]             "create_by" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.create_by).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "create_at" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.create_at).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "update_by" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.update_by).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "update_at" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.update_at).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "del_flag" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.del_flag).unwrap_or_default() ; }
[INFO] [stdout]             _ => { rbson :: Bson :: Null }
[INFO] [stdout]         }
[INFO] [stdout]     } fn table_name() -> String { "sys_dict_type".to_string() } fn
[INFO] [stdout]     table_columns() -> String
[INFO] [stdout]     {
[INFO] [stdout]         "id,name,type,status,remark,create_by,create_at,update_by,update_at,del_flag".to_string()
[INFO] [stdout]     } fn formats(driver_type : & rbatis :: core :: db :: DriverType) -> std ::
[INFO] [stdout]     collections :: HashMap < String, String >
[INFO] [stdout]     {
[INFO] [stdout]         let mut m : std :: collections :: HashMap < String, String > = std ::
[INFO] [stdout]         collections :: HashMap :: new() ; match driver_type
[INFO] [stdout]         {
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Mysql => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Postgres => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Sqlite => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Mssql => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: None => { return m ; },
[INFO] [stdout]         }
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] ............gen impl CRUDTable end............
[INFO] [stdout] ............gen impl CRUDTable:
[INFO] [stdout]  /// 字典类型表
[INFO] [stdout] #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
[INFO] [stdout] Serialize, Deserialize, Validate,)]
[INFO] [stdout] #[serde(rename_all(serialize = "camelCase"))] pub struct SysDictType
[INFO] [stdout] {
[INFO] [stdout]     /// ID
[INFO] [stdout]     pub id: Option<i64>, /// 字典名称
[INFO] [stdout]     #[validate(length(max = 100))] pub name: Option<String>, /// 字典类型
[INFO] [stdout]     #[validate(length(max = 100))] pub r#type: Option<String>,
[INFO] [stdout]     /// 状态（0正常 1停用）
[INFO] [stdout]     pub status: Option<i8>, /// 备注
[INFO] [stdout]     #[validate(length(max = 500))] pub remark: Option<String>, /// 创建者
[INFO] [stdout]     pub create_by: Option<i64>, /// 创建时间
[INFO] [stdout]     pub create_at: Option<rbatis::DateTimeNative>, /// 更新者
[INFO] [stdout]     pub update_by: Option<i64>, /// 更新时间
[INFO] [stdout]     pub update_at: Option<rbatis::DateTimeNative>,
[INFO] [stdout]     /// 删除标志（0代表存在 1代表删除）
[INFO] [stdout]     pub del_flag: Option<i8>,
[INFO] [stdout] } impl rbatis :: crud :: CRUDTable for SysDictType
[INFO] [stdout] {
[INFO] [stdout]     fn get(& self, column : & str) -> rbson :: Bson
[INFO] [stdout]     {
[INFO] [stdout]         return match column
[INFO] [stdout]         {
[INFO] [stdout]             "id" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.id).unwrap_or_default() ; }
[INFO] [stdout]             "name" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.name).unwrap_or_default() ; }
[INFO] [stdout]             "r#type" | "type" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.r#type).unwrap_or_default() ; }
[INFO] [stdout]             "status" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.status).unwrap_or_default() ; }
[INFO] [stdout]             "remark" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.remark).unwrap_or_default() ; }
[INFO] [stdout]             "create_by" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.create_by).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "create_at" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.create_at).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "update_by" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.update_by).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "update_at" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.update_at).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "del_flag" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.del_flag).unwrap_or_default() ; }
[INFO] [stdout]             _ => { rbson :: Bson :: Null }
[INFO] [stdout]         }
[INFO] [stdout]     } fn table_name() -> String { "sys_dict_type".to_string() } fn
[INFO] [stdout]     table_columns() -> String
[INFO] [stdout]     {
[INFO] [stdout]         "id,name,type,status,remark,create_by,create_at,update_by,update_at,del_flag".to_string()
[INFO] [stdout]     } fn formats(driver_type : & rbatis :: core :: db :: DriverType) -> std ::
[INFO] [stdout]     collections :: HashMap < String, String >
[INFO] [stdout]     {
[INFO] [stdout]         let mut m : std :: collections :: HashMap < String, String > = std ::
[INFO] [stdout]         collections :: HashMap :: new() ; match driver_type
[INFO] [stdout]         {
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Mysql => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Postgres => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Sqlite => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Mssql => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: None => { return m ; },
[INFO] [stdout]         }
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] ............gen impl CRUDTable end............
[INFO] [stdout] ............gen impl CRUDTable:
[INFO] [stdout]  /// 字典数据表
[INFO] [stdout] #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
[INFO] [stdout] Serialize, Deserialize, Validate,)]
[INFO] [stdout] #[serde(rename_all(serialize = "camelCase"))] pub struct SysDictData
[INFO] [stdout] {
[INFO] [stdout]     /// ID
[INFO] [stdout]     pub id: Option<i64>, /// 字典类型
[INFO] [stdout]     #[validate(length(max = 100))] pub dict_type: Option<String>,
[INFO] [stdout]     /// 字典编码
[INFO] [stdout]     pub code: Option<i64>, /// 字典标签
[INFO] [stdout]     #[validate(length(max = 100))] pub label: Option<String>, /// 字典键值
[INFO] [stdout]     #[validate(length(max = 100))] pub value: Option<String>,
[INFO] [stdout]     /// 是否默认（1是 0否）
[INFO] [stdout]     pub is_default: Option<i8>, /// 字典排序
[INFO] [stdout]     pub sort: Option<i16>, /// 样式属性（其他样式扩展）
[INFO] [stdout]     #[validate(length(max = 100))] pub css_class: Option<String>,
[INFO] [stdout]     /// 表格回显样式
[INFO] [stdout]     #[validate(length(max = 100))] pub table_class: Option<String>,
[INFO] [stdout]     /// 状态（0正常 1停用）
[INFO] [stdout]     pub status: Option<i8>, /// 备注
[INFO] [stdout]     #[validate(length(max = 500))] pub remark: Option<String>, /// 创建者
[INFO] [stdout]     pub create_by: Option<i64>, /// 创建时间
[INFO] [stdout]     pub create_at: Option<rbatis::DateTimeNative>, /// 更新者
[INFO] [stdout]     pub update_by: Option<i64>, /// 更新时间
[INFO] [stdout]     pub update_at: Option<rbatis::DateTimeNative>,
[INFO] [stdout]     /// 删除标志（0代表存在 1代表删除）
[INFO] [stdout]     pub del_flag: Option<i8>,
[INFO] [stdout] } impl rbatis :: crud :: CRUDTable for SysDictData
[INFO] [stdout] {
[INFO] [stdout]     fn get(& self, column : & str) -> rbson :: Bson
[INFO] [stdout]     {
[INFO] [stdout]         return match column
[INFO] [stdout]         {
[INFO] [stdout]             "id" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.id).unwrap_or_default() ; }
[INFO] [stdout]             "dict_type" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.dict_type).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "code" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.code).unwrap_or_default() ; }
[INFO] [stdout]             "label" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.label).unwrap_or_default() ; }
[INFO] [stdout]             "value" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.value).unwrap_or_default() ; }
[INFO] [stdout]             "is_default" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.is_default).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "sort" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.sort).unwrap_or_default() ; }
[INFO] [stdout]             "css_class" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.css_class).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "table_class" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.table_class).unwrap_or_default() ;
[INFO] [stdout]             } "status" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.status).unwrap_or_default() ; }
[INFO] [stdout]             "remark" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.remark).unwrap_or_default() ; }
[INFO] [stdout]             "create_by" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.create_by).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "create_at" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.create_at).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "update_by" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.update_by).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "update_at" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.update_at).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "del_flag" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.del_flag).unwrap_or_default() ; }
[INFO] [stdout]             _ => { rbson :: Bson :: Null }
[INFO] [stdout]         }
[INFO] [stdout]     } fn table_name() -> String { "sys_dict_data".to_string() } fn
[INFO] [stdout]     table_columns() -> String
[INFO] [stdout]     {
[INFO] [stdout]         "id,dict_type,code,label,value,is_default,sort,css_class,table_class,status,remark,create_by,create_at,update_by,update_at,del_flag".to_string()
[INFO] [stdout]     } fn formats(driver_type : & rbatis :: core :: db :: DriverType) -> std ::
[INFO] [stdout]     collections :: HashMap < String, String >
[INFO] [stdout]     {
[INFO] [stdout]         let mut m : std :: collections :: HashMap < String, String > = std ::
[INFO] [stdout]         collections :: HashMap :: new() ; match driver_type
[INFO] [stdout]         {
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Mysql => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Postgres => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Sqlite => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Mssql => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: None => { return m ; },
[INFO] [stdout]         }
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] ............gen impl CRUDTable end............
[INFO] [stdout] ............gen impl CRUDTable:
[INFO] [stdout]  /// 字典数据表
[INFO] [stdout] #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
[INFO] [stdout] Serialize, Deserialize, Validate,)]
[INFO] [stdout] #[serde(rename_all(serialize = "camelCase"))] pub struct SysDictData
[INFO] [stdout] {
[INFO] [stdout]     /// ID
[INFO] [stdout]     pub id: Option<i64>, /// 字典类型
[INFO] [stdout]     #[validate(length(max = 100))] pub dict_type: Option<String>,
[INFO] [stdout]     /// 字典编码
[INFO] [stdout]     pub code: Option<i64>, /// 字典标签
[INFO] [stdout]     #[validate(length(max = 100))] pub label: Option<String>, /// 字典键值
[INFO] [stdout]     #[validate(length(max = 100))] pub value: Option<String>,
[INFO] [stdout]     /// 是否默认（1是 0否）
[INFO] [stdout]     pub is_default: Option<i8>, /// 字典排序
[INFO] [stdout]     pub sort: Option<i16>, /// 样式属性（其他样式扩展）
[INFO] [stdout]     #[validate(length(max = 100))] pub css_class: Option<String>,
[INFO] [stdout]     /// 表格回显样式
[INFO] [stdout]     #[validate(length(max = 100))] pub table_class: Option<String>,
[INFO] [stdout]     /// 状态（0正常 1停用）
[INFO] [stdout]     pub status: Option<i8>, /// 备注
[INFO] [stdout]     #[validate(length(max = 500))] pub remark: Option<String>, /// 创建者
[INFO] [stdout]     pub create_by: Option<i64>, /// 创建时间
[INFO] [stdout]     pub create_at: Option<rbatis::DateTimeNative>, /// 更新者
[INFO] [stdout]     pub update_by: Option<i64>, /// 更新时间
[INFO] [stdout]     pub update_at: Option<rbatis::DateTimeNative>,
[INFO] [stdout]     /// 删除标志（0代表存在 1代表删除）
[INFO] [stdout]     pub del_flag: Option<i8>,
[INFO] [stdout] } impl rbatis :: crud :: CRUDTable for SysDictData
[INFO] [stdout] {
[INFO] [stdout]     fn get(& self, column : & str) -> rbson :: Bson
[INFO] [stdout]     {
[INFO] [stdout]         return match column
[INFO] [stdout]         {
[INFO] [stdout]             "id" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.id).unwrap_or_default() ; }
[INFO] [stdout]             "dict_type" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.dict_type).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "code" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.code).unwrap_or_default() ; }
[INFO] [stdout]             "label" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.label).unwrap_or_default() ; }
[INFO] [stdout]             "value" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.value).unwrap_or_default() ; }
[INFO] [stdout]             "is_default" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.is_default).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "sort" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.sort).unwrap_or_default() ; }
[INFO] [stdout]             "css_class" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.css_class).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "table_class" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.table_class).unwrap_or_default() ;
[INFO] [stdout]             } "status" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.status).unwrap_or_default() ; }
[INFO] [stdout]             "remark" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.remark).unwrap_or_default() ; }
[INFO] [stdout]             "create_by" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.create_by).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "create_at" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.create_at).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "update_by" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.update_by).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "update_at" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.update_at).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "del_flag" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.del_flag).unwrap_or_default() ; }
[INFO] [stdout]             _ => { rbson :: Bson :: Null }
[INFO] [stdout]         }
[INFO] [stdout]     } fn table_name() -> String { "sys_dict_data".to_string() } fn
[INFO] [stdout]     table_columns() -> String
[INFO] [stdout]     {
[INFO] [stdout]         "id,dict_type,code,label,value,is_default,sort,css_class,table_class,status,remark,create_by,create_at,update_by,update_at,del_flag".to_string()
[INFO] [stdout]     } fn formats(driver_type : & rbatis :: core :: db :: DriverType) -> std ::
[INFO] [stdout]     collections :: HashMap < String, String >
[INFO] [stdout]     {
[INFO] [stdout]         let mut m : std :: collections :: HashMap < String, String > = std ::
[INFO] [stdout]         collections :: HashMap :: new() ; match driver_type
[INFO] [stdout]         {
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Mysql => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Postgres => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Sqlite => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Mssql => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: None => { return m ; },
[INFO] [stdout]         }
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] ............gen impl CRUDTable end............
[INFO] [stdout] ............gen impl CRUDTable:
[INFO] [stdout]  /// 用户和角色关联表
[INFO] [stdout] #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
[INFO] [stdout] Serialize, Deserialize, Validate,)]
[INFO] [stdout] #[serde(rename_all(serialize = "camelCase"))] pub struct SysUserRole
[INFO] [stdout] {
[INFO] [stdout]     /// 用户ID
[INFO] [stdout]     pub user_id: Option<i64>, /// 角色ID
[INFO] [stdout]     pub role_id: Option<i64>,
[INFO] [stdout] } impl rbatis :: crud :: CRUDTable for SysUserRole
[INFO] [stdout] {
[INFO] [stdout]     fn get(& self, column : & str) -> rbson :: Bson
[INFO] [stdout]     {
[INFO] [stdout]         return match column
[INFO] [stdout]         {
[INFO] [stdout]             "user_id" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.user_id).unwrap_or_default() ; }
[INFO] [stdout]             "role_id" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.role_id).unwrap_or_default() ; }
[INFO] [stdout]             _ => { rbson :: Bson :: Null }
[INFO] [stdout]         }
[INFO] [stdout]     } fn table_name() -> String { "sys_user_role".to_string() } fn
[INFO] [stdout]     table_columns() -> String { "user_id,role_id".to_string() } fn
[INFO] [stdout]     formats(driver_type : & rbatis :: core :: db :: DriverType) -> std ::
[INFO] [stdout]     collections :: HashMap < String, String >
[INFO] [stdout]     {
[INFO] [stdout]         let mut m : std :: collections :: HashMap < String, String > = std ::
[INFO] [stdout]         collections :: HashMap :: new() ; match driver_type
[INFO] [stdout]         {
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Mysql => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Postgres => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Sqlite => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Mssql => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: None => { return m ; },
[INFO] [stdout]         }
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] ............gen impl CRUDTable end............
[INFO] [stdout] ............gen impl CRUDTable:
[INFO] [stdout]  /// 角色信息表
[INFO] [stdout] #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
[INFO] [stdout] Serialize, Deserialize, Validate,)]
[INFO] [stdout] #[serde(rename_all(serialize = "camelCase"))] pub struct SysRole
[INFO] [stdout] {
[INFO] [stdout]     /// ID
[INFO] [stdout]     pub id: Option<i64>, /// 角色名称
[INFO] [stdout]     #[validate(length(max = 30))] pub role_name: Option<String>,
[INFO] [stdout]     /// 角色权限字符串
[INFO] [stdout]     #[validate(length(max = 100))] pub role_key: Option<String>,
[INFO] [stdout]     /// 显示顺序
[INFO] [stdout]     pub sort: Option<i32>,
[INFO] [stdout]     /// 数据范围（1：全部数据权限 2：自定数据权限 ）
[INFO] [stdout]     pub data_scope: Option<i8>, /// 菜单树选择项是否关联显示
[INFO] [stdout]     pub menu_check_strictly: Option<i8>, /// 角色状态（0正常 1停用）
[INFO] [stdout]     pub status: Option<i8>, /// 备注
[INFO] [stdout]     #[validate(length(max = 500))] pub remark: Option<String>, /// 创建者
[INFO] [stdout]     pub create_by: Option<i64>, /// 创建时间
[INFO] [stdout]     pub create_at: Option<rbatis::DateTimeNative>, /// 更新者
[INFO] [stdout]     pub update_by: Option<i64>, /// 更新时间
[INFO] [stdout]     pub update_at: Option<rbatis::DateTimeNative>,
[INFO] [stdout]     /// 删除标志（0代表存在 1代表删除）
[INFO] [stdout]     pub del_flag: Option<i8>,
[INFO] [stdout] } impl rbatis :: crud :: CRUDTable for SysRole
[INFO] [stdout] {
[INFO] [stdout]     fn get(& self, column : & str) -> rbson :: Bson
[INFO] [stdout]     {
[INFO] [stdout]         return match column
[INFO] [stdout]         {
[INFO] [stdout]             "id" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.id).unwrap_or_default() ; }
[INFO] [stdout]             "role_name" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.role_name).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "role_key" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.role_key).unwrap_or_default() ; }
[INFO] [stdout]             "sort" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.sort).unwrap_or_default() ; }
[INFO] [stdout]             "data_scope" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.data_scope).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "menu_check_strictly" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.menu_check_strictly).unwrap_or_default() ;
[INFO] [stdout]             } "status" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.status).unwrap_or_default() ; }
[INFO] [stdout]             "remark" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.remark).unwrap_or_default() ; }
[INFO] [stdout]             "create_by" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.create_by).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "create_at" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.create_at).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "update_by" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.update_by).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "update_at" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.update_at).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "del_flag" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.del_flag).unwrap_or_default() ; }
[INFO] [stdout]             _ => { rbson :: Bson :: Null }
[INFO] [stdout]         }
[INFO] [stdout]     } fn table_name() -> String { "sys_role".to_string() } fn table_columns()
[INFO] [stdout]     -> String
[INFO] [stdout]     {
[INFO] [stdout]         "id,role_name,role_key,sort,data_scope,menu_check_strictly,status,remark,create_by,create_at,update_by,update_at,del_flag".to_string()
[INFO] [stdout]     } fn formats(driver_type : & rbatis :: core :: db :: DriverType) -> std ::
[INFO] [stdout]     collections :: HashMap < String, String >
[INFO] [stdout]     {
[INFO] [stdout]         let mut m : std :: collections :: HashMap < String, String > = std ::
[INFO] [stdout]         collections :: HashMap :: new() ; match driver_type
[INFO] [stdout]         {
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Mysql => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Postgres => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Sqlite => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Mssql => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: None => { return m ; },
[INFO] [stdout]         }
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] ............gen impl CRUDTable end............
[INFO] [stdout] ............gen impl CRUDTable:
[INFO] [stdout]  /// 用户和角色关联表
[INFO] [stdout] #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
[INFO] [stdout] Serialize, Deserialize, Validate,)]
[INFO] [stdout] #[serde(rename_all(serialize = "camelCase"))] pub struct SysUserRole
[INFO] [stdout] {
[INFO] [stdout]     /// 用户ID
[INFO] [stdout]     pub user_id: Option<i64>, /// 角色ID
[INFO] [stdout]     pub role_id: Option<i64>,
[INFO] [stdout] } impl rbatis :: crud :: CRUDTable for SysUserRole
[INFO] [stdout] {
[INFO] [stdout]     fn get(& self, column : & str) -> rbson :: Bson
[INFO] [stdout]     {
[INFO] [stdout]         return match column
[INFO] [stdout]         {
[INFO] [stdout]             "user_id" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.user_id).unwrap_or_default() ; }
[INFO] [stdout]             "role_id" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.role_id).unwrap_or_default() ; }
[INFO] [stdout]             _ => { rbson :: Bson :: Null }
[INFO] [stdout]         }
[INFO] [stdout]     } fn table_name() -> String { "sys_user_role".to_string() } fn
[INFO] [stdout]     table_columns() -> String { "user_id,role_id".to_string() } fn
[INFO] [stdout]     formats(driver_type : & rbatis :: core :: db :: DriverType) -> std ::
[INFO] [stdout]     collections :: HashMap < String, String >
[INFO] [stdout]     {
[INFO] [stdout]         let mut m : std :: collections :: HashMap < String, String > = std ::
[INFO] [stdout]         collections :: HashMap :: new() ; match driver_type
[INFO] [stdout]         {
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Mysql => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Postgres => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Sqlite => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Mssql => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: None => { return m ; },
[INFO] [stdout]         }
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] ............gen impl CRUDTable end............
[INFO] [stdout] ............gen impl CRUDTable:
[INFO] [stdout]  /// 操作日志记录
[INFO] [stdout] #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
[INFO] [stdout] Serialize, Deserialize, Validate,)]
[INFO] [stdout] #[serde(rename_all(serialize = "camelCase"))] pub struct SysLog
[INFO] [stdout] {
[INFO] [stdout]     /// ID
[INFO] [stdout]     pub id: Option<i64>, /// 模块标题
[INFO] [stdout]     #[validate(length(max = 50))] pub title: Option<String>,
[INFO] [stdout]     /// 业务类型（0其它 1新增 2修改 3删除）
[INFO] [stdout]     pub business_type: Option<i8>, /// 方法名称
[INFO] [stdout]     #[validate(length(max = 100))] pub method: Option<String>,
[INFO] [stdout]     /// 请求方式
[INFO] [stdout]     #[validate(length(max = 10))] pub request_method: Option<String>,
[INFO] [stdout]     /// 操作类别（0其它 1后台用户 2手机端用户）
[INFO] [stdout]     pub operator_type: Option<i8>, /// 操作人员
[INFO] [stdout]     #[validate(length(max = 50))] pub oper_name: Option<String>, /// 请求URL
[INFO] [stdout]     #[validate(length(max = 255))] pub oper_url: Option<String>,
[INFO] [stdout]     /// 主机地址
[INFO] [stdout]     #[validate(length(max = 128))] pub oper_ip: Option<String>,
[INFO] [stdout]     /// 操作地点
[INFO] [stdout]     #[validate(length(max = 255))] pub oper_location: Option<String>,
[INFO] [stdout]     /// 请求参数
[INFO] [stdout]     #[validate(length(max = 2000))] pub oper_param: Option<String>,
[INFO] [stdout]     /// 返回结果集
[INFO] [stdout]     #[validate(length(max = 65535))] pub json_result: Option<String>,
[INFO] [stdout]     /// 日志变更内容
[INFO] [stdout]     #[validate(length(max = 65535))] pub log_content: Option<String>,
[INFO] [stdout]     /// 操作状态（0正常 1异常）
[INFO] [stdout]     pub status: Option<i8>, /// 错误消息
[INFO] [stdout]     #[validate(length(max = 2000))] pub error_msg: Option<String>,
[INFO] [stdout]     /// 操作时间
[INFO] [stdout]     pub oper_time: Option<rbatis::DateTimeNative>, /// 备注
[INFO] [stdout]     #[validate(length(max = 500))] pub remark: Option<String>, /// 耗时
[INFO] [stdout]     pub take_up_time: Option<i32>, /// 创建者
[INFO] [stdout]     pub create_by: Option<i64>, /// 创建时间
[INFO] [stdout]     pub create_at: Option<rbatis::DateTimeNative>, /// 更新者
[INFO] [stdout]     pub update_by: Option<i64>, /// 更新时间
[INFO] [stdout]     pub update_at: Option<rbatis::DateTimeNative>,
[INFO] [stdout]     /// 删除标志（0代表存在 1代表删除）
[INFO] [stdout]     pub del_flag: Option<i8>,
[INFO] [stdout] } impl rbatis :: crud :: CRUDTable for SysLog
[INFO] [stdout] {
[INFO] [stdout]     fn get(& self, column : & str) -> rbson :: Bson
[INFO] [stdout]     {
[INFO] [stdout]         return match column
[INFO] [stdout]         {
[INFO] [stdout]             "id" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.id).unwrap_or_default() ; }
[INFO] [stdout]             "title" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.title).unwrap_or_default() ; }
[INFO] [stdout]             "business_type" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.business_type).unwrap_or_default() ;
[INFO] [stdout]             } "method" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.method).unwrap_or_default() ; }
[INFO] [stdout]             "request_method" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.request_method).unwrap_or_default() ;
[INFO] [stdout]             } "operator_type" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.operator_type).unwrap_or_default() ;
[INFO] [stdout]             } "oper_name" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.oper_name).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "oper_url" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.oper_url).unwrap_or_default() ; }
[INFO] [stdout]             "oper_ip" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.oper_ip).unwrap_or_default() ; }
[INFO] [stdout]             "oper_location" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.oper_location).unwrap_or_default() ;
[INFO] [stdout]             } "oper_param" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.oper_param).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "json_result" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.json_result).unwrap_or_default() ;
[INFO] [stdout]             } "log_content" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.log_content).unwrap_or_default() ;
[INFO] [stdout]             } "status" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.status).unwrap_or_default() ; }
[INFO] [stdout]             "error_msg" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.error_msg).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "oper_time" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.oper_time).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "remark" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.remark).unwrap_or_default() ; }
[INFO] [stdout]             "take_up_time" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.take_up_time).unwrap_or_default() ;
[INFO] [stdout]             } "create_by" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.create_by).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "create_at" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.create_at).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "update_by" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.update_by).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "update_at" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.update_at).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "del_flag" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.del_flag).unwrap_or_default() ; }
[INFO] [stdout]             _ => { rbson :: Bson :: Null }
[INFO] [stdout]         }
[INFO] [stdout]     } fn table_name() -> String { "sys_log".to_string() } fn table_columns()
[INFO] [stdout]     -> String
[INFO] [stdout]     {
[INFO] [stdout]         "id,title,business_type,method,request_method,operator_type,oper_name,oper_url,oper_ip,oper_location,oper_param,json_result,log_content,status,error_msg,oper_time,remark,take_up_time,create_by,create_at,update_by,update_at,del_flag".to_string()
[INFO] [stdout]     } fn formats(driver_type : & rbatis :: core :: db :: DriverType) -> std ::
[INFO] [stdout]     collections :: HashMap < String, String >
[INFO] [stdout]     {
[INFO] [stdout]         let mut m : std :: collections :: HashMap < String, String > = std ::
[INFO] [stdout]         collections :: HashMap :: new() ; match driver_type
[INFO] [stdout]         {
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Mysql => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Postgres => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Sqlite => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Mssql => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: None => { return m ; },
[INFO] [stdout]         }
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] ............gen impl CRUDTable end............
[INFO] [stdout] ............gen impl CRUDTable:
[INFO] [stdout]  /// 角色信息表
[INFO] [stdout] #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
[INFO] [stdout] Serialize, Deserialize, Validate,)]
[INFO] [stdout] #[serde(rename_all(serialize = "camelCase"))] pub struct SysRole
[INFO] [stdout] {
[INFO] [stdout]     /// ID
[INFO] [stdout]     pub id: Option<i64>, /// 角色名称
[INFO] [stdout]     #[validate(length(max = 30))] pub role_name: Option<String>,
[INFO] [stdout]     /// 角色权限字符串
[INFO] [stdout]     #[validate(length(max = 100))] pub role_key: Option<String>,
[INFO] [stdout]     /// 显示顺序
[INFO] [stdout]     pub sort: Option<i32>,
[INFO] [stdout]     /// 数据范围（1：全部数据权限 2：自定数据权限 ）
[INFO] [stdout]     pub data_scope: Option<i8>, /// 菜单树选择项是否关联显示
[INFO] [stdout]     pub menu_check_strictly: Option<i8>, /// 角色状态（0正常 1停用）
[INFO] [stdout]     pub status: Option<i8>, /// 备注
[INFO] [stdout]     #[validate(length(max = 500))] pub remark: Option<String>, /// 创建者
[INFO] [stdout]     pub create_by: Option<i64>, /// 创建时间
[INFO] [stdout]     pub create_at: Option<rbatis::DateTimeNative>, /// 更新者
[INFO] [stdout]     pub update_by: Option<i64>, /// 更新时间
[INFO] [stdout]     pub update_at: Option<rbatis::DateTimeNative>,
[INFO] [stdout]     /// 删除标志（0代表存在 1代表删除）
[INFO] [stdout]     pub del_flag: Option<i8>,
[INFO] [stdout] } impl rbatis :: crud :: CRUDTable for SysRole
[INFO] [stdout] {
[INFO] [stdout]     fn get(& self, column : & str) -> rbson :: Bson
[INFO] [stdout]     {
[INFO] [stdout]         return match column
[INFO] [stdout]         {
[INFO] [stdout]             "id" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.id).unwrap_or_default() ; }
[INFO] [stdout]             "role_name" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.role_name).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "role_key" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.role_key).unwrap_or_default() ; }
[INFO] [stdout]             "sort" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.sort).unwrap_or_default() ; }
[INFO] [stdout]             "data_scope" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.data_scope).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "menu_check_strictly" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.menu_check_strictly).unwrap_or_default() ;
[INFO] [stdout]             } "status" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.status).unwrap_or_default() ; }
[INFO] [stdout]             "remark" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.remark).unwrap_or_default() ; }
[INFO] [stdout]             "create_by" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.create_by).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "create_at" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.create_at).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "update_by" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.update_by).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "update_at" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.update_at).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "del_flag" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.del_flag).unwrap_or_default() ; }
[INFO] [stdout]             _ => { rbson :: Bson :: Null }
[INFO] [stdout]         }
[INFO] [stdout]     } fn table_name() -> String { "sys_role".to_string() } fn table_columns()
[INFO] [stdout]     -> String
[INFO] [stdout]     {
[INFO] [stdout]         "id,role_name,role_key,sort,data_scope,menu_check_strictly,status,remark,create_by,create_at,update_by,update_at,del_flag".to_string()
[INFO] [stdout]     } fn formats(driver_type : & rbatis :: core :: db :: DriverType) -> std ::
[INFO] [stdout]     collections :: HashMap < String, String >
[INFO] [stdout]     {
[INFO] [stdout]         let mut m : std :: collections :: HashMap < String, String > = std ::
[INFO] [stdout]         collections :: HashMap :: new() ; match driver_type
[INFO] [stdout]         {
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Mysql => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Postgres => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Sqlite => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Mssql => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: None => { return m ; },
[INFO] [stdout]         }
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] ............gen impl CRUDTable end............
[INFO] [stdout] ............gen impl CRUDTable:
[INFO] [stdout]  /// 操作日志记录
[INFO] [stdout] #[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
[INFO] [stdout] Serialize, Deserialize, Validate,)]
[INFO] [stdout] #[serde(rename_all(serialize = "camelCase"))] pub struct SysLog
[INFO] [stdout] {
[INFO] [stdout]     /// ID
[INFO] [stdout]     pub id: Option<i64>, /// 模块标题
[INFO] [stdout]     #[validate(length(max = 50))] pub title: Option<String>,
[INFO] [stdout]     /// 业务类型（0其它 1新增 2修改 3删除）
[INFO] [stdout]     pub business_type: Option<i8>, /// 方法名称
[INFO] [stdout]     #[validate(length(max = 100))] pub method: Option<String>,
[INFO] [stdout]     /// 请求方式
[INFO] [stdout]     #[validate(length(max = 10))] pub request_method: Option<String>,
[INFO] [stdout]     /// 操作类别（0其它 1后台用户 2手机端用户）
[INFO] [stdout]     pub operator_type: Option<i8>, /// 操作人员
[INFO] [stdout]     #[validate(length(max = 50))] pub oper_name: Option<String>, /// 请求URL
[INFO] [stdout]     #[validate(length(max = 255))] pub oper_url: Option<String>,
[INFO] [stdout]     /// 主机地址
[INFO] [stdout]     #[validate(length(max = 128))] pub oper_ip: Option<String>,
[INFO] [stdout]     /// 操作地点
[INFO] [stdout]     #[validate(length(max = 255))] pub oper_location: Option<String>,
[INFO] [stdout]     /// 请求参数
[INFO] [stdout]     #[validate(length(max = 2000))] pub oper_param: Option<String>,
[INFO] [stdout]     /// 返回结果集
[INFO] [stdout]     #[validate(length(max = 65535))] pub json_result: Option<String>,
[INFO] [stdout]     /// 日志变更内容
[INFO] [stdout]     #[validate(length(max = 65535))] pub log_content: Option<String>,
[INFO] [stdout]     /// 操作状态（0正常 1异常）
[INFO] [stdout]     pub status: Option<i8>, /// 错误消息
[INFO] [stdout]     #[validate(length(max = 2000))] pub error_msg: Option<String>,
[INFO] [stdout]     /// 操作时间
[INFO] [stdout]     pub oper_time: Option<rbatis::DateTimeNative>, /// 备注
[INFO] [stdout]     #[validate(length(max = 500))] pub remark: Option<String>, /// 耗时
[INFO] [stdout]     pub take_up_time: Option<i32>, /// 创建者
[INFO] [stdout]     pub create_by: Option<i64>, /// 创建时间
[INFO] [stdout]     pub create_at: Option<rbatis::DateTimeNative>, /// 更新者
[INFO] [stdout]     pub update_by: Option<i64>, /// 更新时间
[INFO] [stdout]     pub update_at: Option<rbatis::DateTimeNative>,
[INFO] [stdout]     /// 删除标志（0代表存在 1代表删除）
[INFO] [stdout]     pub del_flag: Option<i8>,
[INFO] [stdout] } impl rbatis :: crud :: CRUDTable for SysLog
[INFO] [stdout] {
[INFO] [stdout]     fn get(& self, column : & str) -> rbson :: Bson
[INFO] [stdout]     {
[INFO] [stdout]         return match column
[INFO] [stdout]         {
[INFO] [stdout]             "id" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.id).unwrap_or_default() ; }
[INFO] [stdout]             "title" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.title).unwrap_or_default() ; }
[INFO] [stdout]             "business_type" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.business_type).unwrap_or_default() ;
[INFO] [stdout]             } "method" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.method).unwrap_or_default() ; }
[INFO] [stdout]             "request_method" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.request_method).unwrap_or_default() ;
[INFO] [stdout]             } "operator_type" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.operator_type).unwrap_or_default() ;
[INFO] [stdout]             } "oper_name" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.oper_name).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "oper_url" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.oper_url).unwrap_or_default() ; }
[INFO] [stdout]             "oper_ip" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.oper_ip).unwrap_or_default() ; }
[INFO] [stdout]             "oper_location" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.oper_location).unwrap_or_default() ;
[INFO] [stdout]             } "oper_param" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.oper_param).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "json_result" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.json_result).unwrap_or_default() ;
[INFO] [stdout]             } "log_content" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.log_content).unwrap_or_default() ;
[INFO] [stdout]             } "status" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.status).unwrap_or_default() ; }
[INFO] [stdout]             "error_msg" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.error_msg).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "oper_time" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.oper_time).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "remark" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.remark).unwrap_or_default() ; }
[INFO] [stdout]             "take_up_time" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson ::
[INFO] [stdout]                 to_bson(& self.take_up_time).unwrap_or_default() ;
[INFO] [stdout]             } "create_by" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.create_by).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "create_at" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.create_at).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "update_by" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.update_by).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "update_at" =>
[INFO] [stdout]             {
[INFO] [stdout]                 return rbson :: to_bson(& self.update_at).unwrap_or_default()
[INFO] [stdout]                 ;
[INFO] [stdout]             } "del_flag" =>
[INFO] [stdout]             { return rbson :: to_bson(& self.del_flag).unwrap_or_default() ; }
[INFO] [stdout]             _ => { rbson :: Bson :: Null }
[INFO] [stdout]         }
[INFO] [stdout]     } fn table_name() -> String { "sys_log".to_string() } fn table_columns()
[INFO] [stdout]     -> String
[INFO] [stdout]     {
[INFO] [stdout]         "id,title,business_type,method,request_method,operator_type,oper_name,oper_url,oper_ip,oper_location,oper_param,json_result,log_content,status,error_msg,oper_time,remark,take_up_time,create_by,create_at,update_by,update_at,del_flag".to_string()
[INFO] [stdout]     } fn formats(driver_type : & rbatis :: core :: db :: DriverType) -> std ::
[INFO] [stdout]     collections :: HashMap < String, String >
[INFO] [stdout]     {
[INFO] [stdout]         let mut m : std :: collections :: HashMap < String, String > = std ::
[INFO] [stdout]         collections :: HashMap :: new() ; match driver_type
[INFO] [stdout]         {
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Mysql => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Postgres => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Sqlite => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: Mssql => { return m ; },
[INFO] [stdout]             rbatis :: core :: db :: DriverType :: None => { return m ; },
[INFO] [stdout]         }
[INFO] [stdout]     }
[INFO] [stdout] }
[INFO] [stdout] ............gen impl CRUDTable end............
[INFO] [stderr]     Checking xlsxwriter v0.3.5
[INFO] [stderr]     Checking crab-excel v0.1.0 (/opt/rustwide/workdir/crab-excel)
[INFO] [stdout] field_name = id
[INFO] [stdout] col_name = 用户ID
[INFO] [stdout] field_name = name
[INFO] [stdout] col_name = 用户昵称
[INFO] [stdout] field_name = roles
[INFO] [stdout] col_name = 
[INFO] [stdout] field_name = del
[INFO] [stdout] col_name = 是否删除
[INFO] [stdout] field_name = date
[INFO] [stdout] col_name = 日期
[INFO] [stdout] ["id", "name", "roles", "del", "date"]
[INFO] [stdout] "use simple_excel_writer :: * ; impl ExcelWriter for TestExcel\n{\n    type Input = Self ; fn simple_write(data : & [Self :: Input]) -> Result <\n    Option < Vec < u8 >>, crab_excel :: ExcelError >\n    {\n        let mut wb = Workbook :: create(\"测试数据.xlsx\") ; let mut sheet =\n        wb.create_sheet(\"测试数据\") ;\n        sheet.add_column(Column { width : 30.0 }) ;\n        sheet.add_column(Column { width : 30.0 }) ;\n        wb.write_sheet(& mut sheet, | sheet_writer |\n        {\n            let sw = sheet_writer ;\n            sw.append_row({\n                let mut row = Row :: new() ; row.add_cell(\"id\") ;\n                row.add_cell(\"name\") ; row.add_cell(\"roles\") ;\n                row.add_cell(\"del\") ; row.add_cell(\"date\") ; row\n            }) ? ; for dt in data.iter()\n            {\n                let mut row = Row :: new() ; for fd in 0 .. 4\n                { row.add_cell(dt.name.clone()) ; } sw.append_row(row) ;\n            } Ok(())\n        }).expect(\"write excel error!\") ;\n        wb.close().map_err(| e | crab_excel :: ExcelError ::\n        E(\"close excel error!\".to_string()))\n    }\n}"
[INFO] [stdout] warning: fields `id`, `roles`, `del`, and `date` are never read
[INFO] [stdout]   --> crab-excel/tests/excel_writer.rs:7:5
[INFO] [stdout]    |
[INFO] [stdout] 5  | struct TestExcel {
[INFO] [stdout]    |        --------- fields in this struct
[INFO] [stdout] 6  |     #[excel_col(name = "用户ID", sort = 1)]
[INFO] [stdout] 7  |     id: u32,
[INFO] [stdout]    |     ^^
[INFO] [stdout] ...
[INFO] [stdout] 11 |     roles: Vec<u32>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 12 |     #[excel_col(name = "是否删除", sort = 2)]
[INFO] [stdout] 13 |     del: u8,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 14 |     #[excel_col(sort = 1, name = "日期")]
[INFO] [stdout] 15 |     date: u128,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TestExcel` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]  --> crab-excel/tests/excel_writer.rs:4:26
[INFO] [stdout]   |
[INFO] [stdout] 4 | #[derive(Debug, Default, ExcelWriter)]
[INFO] [stdout]   |                          ^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]   = note: `#[warn(unused_must_use)]` on by default
[INFO] [stdout]   = note: this warning originates in the derive macro `ExcelWriter` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 2 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking crab-cache v0.1.0 (/opt/rustwide/workdir/crab-cache)
[INFO] [stderr]     Checking crab-service v0.1.0 (/opt/rustwide/workdir/crab-service)
[INFO] [stdout] warning: unused import: `ConfigUtil`
[INFO] [stdout]  --> crab-service/src/user.rs:5:18
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crab_cache::{ConfigUtil, RedisCache};
[INFO] [stdout]   |                  ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ConfigUtil`
[INFO] [stdout]  --> crab-service/src/user.rs:5:18
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crab_cache::{ConfigUtil, RedisCache};
[INFO] [stdout]   |                  ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `code`
[INFO] [stdout]   --> crab-service/src/user.rs:27:9
[INFO] [stdout]    |
[INFO] [stdout] 27 |         code: Option<String>,
[INFO] [stdout]    |         ^^^^ help: if this is intentional, prefix it with an underscore: `_code`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `uuid`
[INFO] [stdout]   --> crab-service/src/user.rs:28:9
[INFO] [stdout]    |
[INFO] [stdout] 28 |         uuid: Option<String>,
[INFO] [stdout]    |         ^^^^ help: if this is intentional, prefix it with an underscore: `_uuid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `code`
[INFO] [stdout]   --> crab-service/src/user.rs:27:9
[INFO] [stdout]    |
[INFO] [stdout] 27 |         code: Option<String>,
[INFO] [stdout]    |         ^^^^ help: if this is intentional, prefix it with an underscore: `_code`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `uuid`
[INFO] [stdout]   --> crab-service/src/user.rs:28:9
[INFO] [stdout]    |
[INFO] [stdout] 28 |         uuid: Option<String>,
[INFO] [stdout]    |         ^^^^ help: if this is intentional, prefix it with an underscore: `_uuid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `verify_captcha` is never used
[INFO] [stdout]    --> crab-service/src/user.rs:138:14
[INFO] [stdout]     |
[INFO] [stdout] 21  | impl SysLoginSrv {
[INFO] [stdout]     | ---------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 138 |     async fn verify_captcha(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `verify_captcha` is never used
[INFO] [stdout]    --> crab-service/src/user.rs:138:14
[INFO] [stdout]     |
[INFO] [stdout] 21  | impl SysLoginSrv {
[INFO] [stdout]     | ---------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 138 |     async fn verify_captcha(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 4 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 4 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking crab-admin v0.1.0 (/opt/rustwide/workdir/crab-admin)
[INFO] [stderr]     Finished dev [unoptimized + debuginfo] target(s) in 30.10s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: nom v5.1.2, quick-xml v0.19.0
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1`
[INFO] running `Command { std: "docker" "inspect" "f18eb651e15ca9c9ea768828fdfa87d26a0192e9ecbc9a32717d7115683bf731", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "f18eb651e15ca9c9ea768828fdfa87d26a0192e9ecbc9a32717d7115683bf731", kill_on_drop: false }`
[INFO] [stdout] f18eb651e15ca9c9ea768828fdfa87d26a0192e9ecbc9a32717d7115683bf731
