[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] 5b0124d6d7662803e9d1396e05c7dc5fd78f9ea2 [INFO] testing LittleGuest/hairy-crabs against try#1b74e096b9bfb06f84a3007193dcd2f059cbdf6a for pr-96025 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FLittleGuest%2Fhairy-crabs" "/workspace/builds/worker-1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-1/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/LittleGuest/hairy-crabs on toolchain 1b74e096b9bfb06f84a3007193dcd2f059cbdf6a [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+1b74e096b9bfb06f84a3007193dcd2f059cbdf6a" "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-1/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: "/workspace/cargo-home/bin/cargo" "+1b74e096b9bfb06f84a3007193dcd2f059cbdf6a" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1/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:b0c94ce3c1162fcb8e57cac5b65ec2f72eabb1eebea4fcc35e269e823f681646" "/opt/rustwide/cargo-home/bin/cargo" "+1b74e096b9bfb06f84a3007193dcd2f059cbdf6a" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap. [INFO] [stdout] 3da2606036786a914d09889801b71078b3c356a44effc59910d3893f4f8f3c09 [INFO] running `Command { std: "docker" "start" "-a" "3da2606036786a914d09889801b71078b3c356a44effc59910d3893f4f8f3c09", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "3da2606036786a914d09889801b71078b3c356a44effc59910d3893f4f8f3c09", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "3da2606036786a914d09889801b71078b3c356a44effc59910d3893f4f8f3c09", kill_on_drop: false }` [INFO] [stdout] 3da2606036786a914d09889801b71078b3c356a44effc59910d3893f4f8f3c09 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1/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" "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:b0c94ce3c1162fcb8e57cac5b65ec2f72eabb1eebea4fcc35e269e823f681646" "/opt/rustwide/cargo-home/bin/cargo" "+1b74e096b9bfb06f84a3007193dcd2f059cbdf6a" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] c6dc64d1d027a30f22d74f36e4140d7c5b1a72ca9e3569b41c026041cc9651f8 [INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap. [INFO] running `Command { std: "docker" "start" "-a" "c6dc64d1d027a30f22d74f36e4140d7c5b1a72ca9e3569b41c026041cc9651f8", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Compiling proc-macro2 v1.0.37 [INFO] [stderr] Compiling unicode-xid v0.2.2 [INFO] [stderr] Compiling syn v1.0.91 [INFO] [stderr] Compiling cfg-if v1.0.0 [INFO] [stderr] Compiling libc v0.2.124 [INFO] [stderr] Compiling version_check v0.9.4 [INFO] [stderr] Compiling autocfg v1.1.0 [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 spin v0.5.2 [INFO] [stderr] Compiling once_cell v1.10.0 [INFO] [stderr] Compiling log v0.4.16 [INFO] [stderr] Compiling libm v0.2.2 [INFO] [stderr] Compiling regex-syntax v0.6.25 [INFO] [stderr] Compiling cc v1.0.73 [INFO] [stderr] Compiling scopeguard v1.1.0 [INFO] [stderr] Compiling smallvec v1.8.0 [INFO] [stderr] Compiling serde_json v1.0.79 [INFO] [stderr] Compiling itoa v1.0.1 [INFO] [stderr] Compiling bitflags v1.3.2 [INFO] [stderr] Compiling ryu v1.0.9 [INFO] [stderr] Compiling futures-core v0.3.21 [INFO] [stderr] Compiling typenum v1.15.0 [INFO] [stderr] Compiling parking_lot_core v0.9.2 [INFO] [stderr] Compiling ppv-lite86 v0.2.16 [INFO] [stderr] Compiling pin-project-lite v0.2.8 [INFO] [stderr] Compiling tinyvec_macros v0.1.0 [INFO] [stderr] Compiling base64 v0.13.0 [INFO] [stderr] Compiling unicode-width v0.1.9 [INFO] [stderr] Compiling crossbeam-utils v0.8.8 [INFO] [stderr] Compiling futures-sink v0.3.21 [INFO] [stderr] Compiling untrusted v0.7.1 [INFO] [stderr] Compiling vec_map v0.8.2 [INFO] [stderr] Compiling ansi_term v0.12.1 [INFO] [stderr] Compiling strsim v0.8.0 [INFO] [stderr] Compiling unicode-bidi v0.3.7 [INFO] [stderr] Compiling percent-encoding v2.1.0 [INFO] [stderr] Compiling matches v0.1.9 [INFO] [stderr] Compiling bytes v1.1.0 [INFO] [stderr] Compiling futures-channel v0.3.21 [INFO] [stderr] Compiling futures-task v0.3.21 [INFO] [stderr] Compiling futures-util v0.3.21 [INFO] [stderr] Compiling pin-utils v0.1.0 [INFO] [stderr] Compiling futures-io v0.3.21 [INFO] [stderr] Compiling ucd-trie v0.1.3 [INFO] [stderr] Compiling slab v0.4.6 [INFO] [stderr] Compiling base64ct v1.5.0 [INFO] [stderr] Compiling byteorder v1.4.3 [INFO] [stderr] Compiling maplit v1.0.2 [INFO] [stderr] Compiling subtle v2.4.1 [INFO] [stderr] Compiling async-trait v0.1.53 [INFO] [stderr] Compiling const-oid v0.7.1 [INFO] [stderr] Compiling unicode-segmentation v1.9.0 [INFO] [stderr] Compiling proc-macro-hack v0.5.19 [INFO] [stderr] Compiling parking_lot_core v0.8.5 [INFO] [stderr] Compiling crossbeam-queue v0.3.5 [INFO] [stderr] Compiling zeroize v1.5.4 [INFO] [stderr] Compiling siphasher v0.3.10 [INFO] [stderr] Compiling pkg-config v0.3.25 [INFO] [stderr] Compiling const_fn v0.4.9 [INFO] [stderr] Compiling vcpkg v0.2.15 [INFO] [stderr] Compiling num-bigint-dig v0.8.1 [INFO] [stderr] Compiling fnv v1.0.7 [INFO] [stderr] Compiling glob v0.3.0 [INFO] [stderr] Compiling termcolor v1.1.3 [INFO] [stderr] Compiling rust_decimal v1.23.1 [INFO] [stderr] Compiling hex v0.4.3 [INFO] [stderr] Compiling cpufeatures v0.2.2 [INFO] [stderr] Compiling minimal-lexical v0.2.1 [INFO] [stderr] Compiling unicode_categories v0.1.1 [INFO] [stderr] Compiling crc-catalog v1.1.1 [INFO] [stderr] Compiling arrayvec v0.7.2 [INFO] [stderr] Compiling anyhow v1.0.56 [INFO] [stderr] Compiling if_chain v1.0.2 [INFO] [stderr] Compiling bit-vec v0.6.3 [INFO] [stderr] Compiling event-listener v2.5.2 [INFO] [stderr] Compiling sha1_smol v1.0.0 [INFO] [stderr] Compiling xml-rs v0.8.4 [INFO] [stderr] Compiling paste v1.0.7 [INFO] [stderr] Compiling strsim v0.10.0 [INFO] [stderr] Compiling dtoa v0.4.8 [INFO] [stderr] Compiling crc32fast v1.3.2 [INFO] [stderr] Compiling itoa v0.4.8 [INFO] [stderr] Compiling base64 v0.12.3 [INFO] [stderr] Compiling humantime v2.1.0 [INFO] [stderr] Compiling bindgen v0.58.1 [INFO] [stderr] Compiling rustc-hash v1.1.0 [INFO] [stderr] Compiling encoding_rs v0.8.31 [INFO] [stderr] Compiling adler v1.0.2 [INFO] [stderr] Compiling unic-common v0.9.0 [INFO] [stderr] Compiling unic-char-range v0.9.0 [INFO] [stderr] Compiling lazycell v1.3.0 [INFO] [stderr] Compiling peeking_take_while v0.1.2 [INFO] [stderr] Compiling shlex v1.1.0 [INFO] [stderr] Compiling same-file v1.0.6 [INFO] [stderr] Compiling ident_case v1.0.1 [INFO] [stderr] Compiling os_str_bytes v6.0.0 [INFO] [stderr] Compiling heck v0.4.0 [INFO] [stderr] Compiling deunicode v0.4.3 [INFO] [stderr] Compiling humansize v1.1.1 [INFO] [stderr] Compiling textwrap v0.15.0 [INFO] [stderr] Compiling crab-util v0.1.0 (/opt/rustwide/workdir/crab-util) [INFO] [stderr] Compiling instant v0.1.12 [INFO] [stderr] Compiling libloading v0.7.3 [INFO] [stderr] Compiling lazy_static v1.4.0 [INFO] [stderr] Compiling thread_local v1.1.4 [INFO] [stderr] Compiling tinyvec v1.5.1 [INFO] [stderr] Compiling textwrap v0.11.0 [INFO] [stderr] Compiling form_urlencoded v1.0.1 [INFO] [stderr] Compiling num-traits v0.2.14 [INFO] [stderr] Compiling num-integer v0.1.44 [INFO] [stderr] Compiling indexmap v1.8.1 [INFO] [stderr] Compiling lock_api v0.4.7 [INFO] [stderr] Compiling num-iter v0.1.42 [INFO] [stderr] Compiling num-bigint v0.3.3 [INFO] [stderr] Compiling num-bigint v0.2.6 [INFO] [stderr] Compiling memoffset v0.6.5 [INFO] [stderr] Compiling crossbeam-epoch v0.9.8 [INFO] [stderr] Compiling ahash v0.7.6 [INFO] [stderr] Compiling proc-macro-error-attr v1.0.4 [INFO] [stderr] Compiling generic-array v0.14.5 [INFO] [stderr] Compiling proc-macro-error v1.0.4 [INFO] [stderr] Compiling uncased v0.9.6 [INFO] [stderr] Compiling standback v0.2.17 [INFO] [stderr] Compiling time v0.2.27 [INFO] [stderr] Compiling nom v5.1.2 [INFO] [stderr] Compiling pest v2.1.3 [INFO] [stderr] Compiling pem-rfc7468 v0.3.1 [INFO] [stderr] Compiling heck v0.3.3 [INFO] [stderr] Compiling crc v2.1.0 [INFO] [stderr] Compiling sha1 v0.6.1 [INFO] [stderr] Compiling unic-ucd-version v0.9.0 [INFO] [stderr] Compiling miniz_oxide v0.5.1 [INFO] [stderr] Compiling unic-char-property v0.9.0 [INFO] [stderr] Compiling clang-sys v1.3.1 [INFO] [stderr] Compiling walkdir v2.3.2 [INFO] [stderr] Compiling slug v0.1.4 [INFO] [stderr] Compiling clap_lex v0.1.1 [INFO] [stderr] Compiling ring v0.16.20 [INFO] [stderr] Compiling unic-ucd-segment v0.9.0 [INFO] [stderr] Compiling libsqlite3-sys v0.24.2 [INFO] [stderr] Compiling unicode-normalization v0.1.19 [INFO] [stderr] Compiling aho-corasick v0.7.18 [INFO] [stderr] Compiling nom v7.1.1 [INFO] [stderr] Compiling bstr v0.2.17 [INFO] [stderr] Compiling crossbeam-channel v0.5.4 [INFO] [stderr] Compiling pest_meta v2.1.3 [INFO] [stderr] Compiling quote v1.0.18 [INFO] [stderr] Compiling getrandom v0.2.6 [INFO] [stderr] Compiling time v0.1.43 [INFO] [stderr] Compiling num_cpus v1.13.1 [INFO] [stderr] Compiling atty v0.2.14 [INFO] [stderr] Compiling socket2 v0.4.4 [INFO] [stderr] Compiling signal-hook-registry v1.4.0 [INFO] [stderr] Compiling which v3.1.1 [INFO] [stderr] Compiling flate2 v1.0.23 [INFO] [stderr] Compiling spin v0.9.3 [INFO] [stderr] Compiling unic-segment v0.9.0 [INFO] [stderr] Compiling phf_shared v0.10.0 [INFO] [stderr] Compiling rand_core v0.6.3 [INFO] [stderr] Compiling clap v2.34.0 [INFO] [stderr] Compiling dashmap v4.0.2 [INFO] [stderr] Compiling crossbeam-deque v0.8.1 [INFO] [stderr] Compiling parking_lot v0.12.0 [INFO] [stderr] Compiling regex v1.5.5 [INFO] [stderr] Compiling idna v0.2.3 [INFO] [stderr] Compiling stringprep v0.1.2 [INFO] [stderr] Compiling atoi v0.4.0 [INFO] [stderr] Compiling parking_lot v0.11.2 [INFO] [stderr] Compiling quick-xml v0.19.0 [INFO] [stderr] Compiling codepage v0.1.1 [INFO] [stderr] Compiling phf v0.10.1 [INFO] [stderr] Compiling rand_chacha v0.3.1 [INFO] [stderr] Compiling hashbrown v0.11.2 [INFO] [stderr] Compiling crossbeam v0.8.1 [INFO] [stderr] Compiling crypto-bigint v0.3.2 [INFO] [stderr] Compiling crypto-common v0.1.3 [INFO] [stderr] Compiling block-buffer v0.10.2 [INFO] [stderr] Compiling cexpr v0.4.0 [INFO] [stderr] Compiling futures-intrusive v0.4.0 [INFO] [stderr] Compiling url v2.2.2 [INFO] [stderr] Compiling webpki v0.21.4 [INFO] [stderr] Compiling sct v0.6.1 [INFO] [stderr] Compiling rand v0.8.5 [INFO] [stderr] Compiling digest v0.10.3 [INFO] [stderr] Compiling pem v0.8.3 [INFO] [stderr] Compiling parse-zoneinfo v0.3.0 [INFO] [stderr] Compiling hashlink v0.7.0 [INFO] [stderr] Compiling webpki-roots v0.21.1 [INFO] [stderr] Compiling der v0.5.1 [INFO] [stderr] Compiling sha-1 v0.10.0 [INFO] [stderr] Compiling sha2 v0.10.2 [INFO] [stderr] Compiling phf_generator v0.10.0 [INFO] [stderr] Compiling phf_codegen v0.10.0 [INFO] [stderr] Compiling chrono-tz-build v0.0.2 [INFO] [stderr] Compiling spki v0.5.4 [INFO] [stderr] Compiling pkcs8 v0.8.0 [INFO] [stderr] Compiling pkcs1 v0.3.3 [INFO] [stderr] Compiling rsa v0.6.1 [INFO] [stderr] Compiling chrono-tz v0.6.1 [INFO] [stderr] Compiling pest_generator v2.1.3 [INFO] [stderr] Compiling validator_types v0.14.0 [INFO] [stderr] Compiling darling_core v0.13.4 [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 structopt-derive v0.4.18 [INFO] [stderr] Compiling time-macros-impl v0.1.2 [INFO] [stderr] Compiling pin-project-internal v1.0.10 [INFO] [stderr] Compiling validator_derive v0.14.0 [INFO] [stderr] Compiling clap_derive v3.1.7 [INFO] [stderr] Compiling time-macros v0.1.1 [INFO] [stderr] Compiling darling_macro v0.13.4 [INFO] [stderr] Compiling pin-project v1.0.10 [INFO] [stderr] Compiling flume v0.10.12 [INFO] [stderr] Compiling darling v0.13.4 [INFO] [stderr] Compiling structopt v0.3.26 [INFO] [stderr] Compiling thiserror v1.0.30 [INFO] [stderr] Compiling zip v0.5.13 [INFO] [stderr] Compiling crab-excel-derive v0.1.0 (/opt/rustwide/workdir/crab-excel-derive) [INFO] [stderr] Compiling clap v3.1.12 [INFO] [stderr] Compiling simple_excel_writer v0.1.9 [INFO] [stderr] Compiling futures-executor v0.3.21 [INFO] [stderr] Compiling futures v0.3.21 [INFO] [stderr] Compiling chrono v0.4.19 [INFO] [stderr] Compiling uuid v0.8.2 [INFO] [stderr] Compiling either v1.6.1 [INFO] [stderr] Compiling serde_bytes v0.11.5 [INFO] [stderr] Compiling bigdecimal v0.2.2 [INFO] [stderr] Compiling ipnetwork v0.17.0 [INFO] [stderr] Compiling toml v0.5.9 [INFO] [stderr] Compiling mio v0.8.2 [INFO] [stderr] Compiling rustls v0.19.1 [INFO] [stderr] Compiling env_logger v0.8.4 [INFO] [stderr] Compiling globset v0.4.8 [INFO] [stderr] Compiling calamine v0.18.0 [INFO] [stderr] Compiling itertools v0.10.3 [INFO] [stderr] Compiling tokio v1.17.0 [INFO] [stderr] Compiling ignore v0.4.18 [INFO] [stderr] Compiling html_parser v0.6.2 [INFO] [stderr] Compiling rexpr v1.0.7 [INFO] [stderr] Compiling validator v0.14.0 [INFO] [stderr] Compiling rbson v2.0.3 [INFO] [stderr] Compiling simple_asn1 v0.4.1 [INFO] [stderr] Compiling fast_log v1.5.1 [INFO] [stderr] Compiling py_sql v1.0.1 [INFO] [stderr] Compiling jsonwebtoken v7.2.0 [INFO] [stderr] Compiling globwalk v0.8.1 [INFO] [stderr] Compiling sqlformat v0.1.8 [INFO] [stderr] Compiling rbatis_sql_macro v3.0.10 [INFO] [stderr] Compiling rbatis-macro-driver v3.1.1 [INFO] [stderr] Compiling rbatis_sql v3.0.17 [INFO] [stderr] Compiling tera v1.15.0 [INFO] [stderr] Compiling tokio-rustls v0.22.0 [INFO] [stderr] Compiling tokio-util v0.6.9 [INFO] [stderr] Compiling tokio-stream v0.1.8 [INFO] [stderr] Compiling sqlx-rt v0.5.13 [INFO] [stderr] Compiling sqlx-core v0.5.13 [INFO] [stderr] Compiling combine v4.6.3 [INFO] [stderr] Compiling libxlsxwriter-sys v1.1.1 [INFO] [stderr] Compiling rbatis-core v3.1.6 [INFO] [stderr] Compiling rbatis v3.1.6 [INFO] [stderr] Compiling xlsxwriter v0.3.5 [INFO] [stderr] Compiling redis v0.21.5 [INFO] [stderr] Compiling crab-excel v0.1.0 (/opt/rustwide/workdir/crab-excel) [INFO] [stderr] Compiling generator v0.2.0 (/opt/rustwide/workdir/generator) [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: 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 ()) AND FIND_IN_SET(TABLE_NAME, #{table_names}) ORDER BY CREATE_TIME; [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, ?)") ; sql.push_str(" ") ; [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: 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 ()) AND FIND_IN_SET(TABLE_NAME, #{table_names}) ORDER BY ORDINAL_POSITION; [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, ?)") ; sql.push_str(" ") ; [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] /// 所从属的表名,如索引所在的表名 [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: SELECT type, name, tbl_name, rootpage, sql FROM sqlite_master WHERE type = 'table' AND ( 1 = 2 OR name = '#{item}' ) ORDER by rootpage; [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: pragma table_info('#{table_names}'); [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] warning: unused import: `rbatis::crud::CRUD` [INFO] [stdout] --> generator/src/sqlite.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use rbatis::crud::CRUD; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Compiling crab-lib v0.1.0 (/opt/rustwide/workdir/crab-lib) [INFO] [stderr] Compiling crab-common v0.1.0 (/opt/rustwide/workdir/crab-common) [INFO] [stdout] warning: unused `#[macro_use]` import [INFO] [stdout] --> crab-lib/src/lib.rs:2:1 [INFO] [stdout] | [INFO] [stdout] 2 | #[macro_use] [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Compiling crab-config v0.1.0 (/opt/rustwide/workdir/crab-config) [INFO] [stdout] warning: unused `#[macro_use]` import [INFO] [stdout] --> crab-lib/src/lib.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 | #[macro_use] [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `#[macro_use]` import [INFO] [stdout] --> crab-lib/src/lib.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | #[macro_use] [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 3 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::*` [INFO] [stdout] --> crab-config/src/lib.rs:64:9 [INFO] [stdout] | [INFO] [stdout] 64 | use super::*; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] help: consider adding a `#[cfg(test)]` to the containing module [INFO] [stdout] --> crab-config/src/lib.rs:63:1 [INFO] [stdout] | [INFO] [stdout] 63 | mod test { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Compiling crab-model v0.1.0 (/opt/rustwide/workdir/crab-model) [INFO] [stdout] warning: 1 warning emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] ............gen impl CRUDTable: [INFO] [stdout] /// 用户信息表 [INFO] [stdout] #[derive(Default, Clone, Debug, Serialize, Deserialize, Validate)] [INFO] [stdout] #[serde(rename_all(serialize = "camelCase"))] pub struct SysUser [INFO] [stdout] { [INFO] [stdout] /// 用户ID [INFO] [stdout] #[validate(length(max = 64))] pub id : Option < String >, /// 部门ID [INFO] [stdout] #[validate(length(max = 50))] pub dept_id : Option < String >, /// 姓名 [INFO] [stdout] #[validate(length(max = 50))] pub name : Option < String >, /// 英文名 [INFO] [stdout] #[validate(length(max = 50))] pub name_en : Option < String >, [INFO] [stdout] /// 用户编号 [INFO] [stdout] #[validate(length(max = 50))] pub no : Option < String >, /// 登陆名称 [INFO] [stdout] #[validate(length(max = 30))] pub user_name : Option < String >, [INFO] [stdout] /// 别称 [INFO] [stdout] #[validate(length(max = 30))] pub nick_name : Option < String >, [INFO] [stdout] /// 前后台类型标识 0:后台用户 1:前台用户 [INFO] [stdout] #[validate(length(max = 2))] pub user_type : Option < String >, [INFO] [stdout] /// 用户邮箱 [INFO] [stdout] #[validate(length(max = 50))] pub email : Option < String >, [INFO] [stdout] /// 手机号码 [INFO] [stdout] #[validate(length(max = 11))] pub phonenumber : 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] #[validate(length(max = 100))] pub password : Option < String >, [INFO] [stdout] /// 生日 [INFO] [stdout] pub birthday : Option < rbatis :: DateNative >, /// 民族 [INFO] [stdout] #[validate(length(max = 100))] pub nation : Option < String >, /// 籍贯 [INFO] [stdout] #[validate(length(max = 100))] pub birth_address : Option < String >, [INFO] [stdout] /// 政治面貌 [INFO] [stdout] #[validate(length(max = 50))] pub polity : Option < String >, /// 职称 [INFO] [stdout] #[validate(length(max = 100))] pub title : Option < String >, [INFO] [stdout] /// 办公电话 [INFO] [stdout] #[validate(length(max = 50))] pub office_tel : Option < String >, [INFO] [stdout] /// 传真号 [INFO] [stdout] #[validate(length(max = 50))] pub fax : Option < String >, [INFO] [stdout] /// 工作地点 [INFO] [stdout] #[validate(length(max = 100))] pub work_space : Option < String >, [INFO] [stdout] /// 排序号 [INFO] [stdout] pub sort : Option < i32 >, /// 用户姓名全拼和简拼 [INFO] [stdout] #[validate(length(max = 500))] pub user_pinyin : Option < String >, [INFO] [stdout] /// 帐号状态(0正常 1停用) [INFO] [stdout] #[validate(length(max = 1))] pub status : Option < String >, [INFO] [stdout] /// 删除标志(0代表存在 2代表删除) [INFO] [stdout] #[validate(length(max = 1))] pub del_flag : Option < String >, [INFO] [stdout] /// 最后登录IP [INFO] [stdout] #[validate(length(max = 128))] pub login_ip : Option < String >, [INFO] [stdout] /// 最后登录时间 [INFO] [stdout] pub login_date : Option < rbatis :: DateTimeNative >, /// 创建者 [INFO] [stdout] #[validate(length(max = 64))] pub create_by : Option < String >, [INFO] [stdout] /// 创建部门 [INFO] [stdout] #[validate(length(max = 64))] pub create_dept : Option < String >, [INFO] [stdout] /// 创建时间 [INFO] [stdout] pub create_time : Option < rbatis :: DateTimeNative >, /// 更新者 [INFO] [stdout] #[validate(length(max = 64))] pub update_by : Option < String >, [INFO] [stdout] /// 更新时间 [INFO] [stdout] pub update_time : Option < rbatis :: DateTimeNative >, /// 更新IP [INFO] [stdout] #[validate(length(max = 128))] pub update_ip : Option < String >, [INFO] [stdout] /// 备注 [INFO] [stdout] #[validate(length(max = 500))] pub remark : Option < String >, /// 版本 [INFO] [stdout] pub version : Option < i32 >, [INFO] [stdout] } impl rbatis :: crud :: CRUDTable for SysUser [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] "dept_id" => [INFO] [stdout] { return rbson :: to_bson(& self.dept_id).unwrap_or_default() ; } [INFO] [stdout] "name" => [INFO] [stdout] { return rbson :: to_bson(& self.name).unwrap_or_default() ; } [INFO] [stdout] "name_en" => [INFO] [stdout] { return rbson :: to_bson(& self.name_en).unwrap_or_default() ; } [INFO] [stdout] "no" => [INFO] [stdout] { return rbson :: to_bson(& self.no).unwrap_or_default() ; } [INFO] [stdout] "user_name" => [INFO] [stdout] { [INFO] [stdout] return rbson :: to_bson(& self.user_name).unwrap_or_default() [INFO] [stdout] ; [INFO] [stdout] } "nick_name" => [INFO] [stdout] { [INFO] [stdout] return rbson :: to_bson(& self.nick_name).unwrap_or_default() [INFO] [stdout] ; [INFO] [stdout] } "user_type" => [INFO] [stdout] { [INFO] [stdout] return rbson :: to_bson(& self.user_type).unwrap_or_default() [INFO] [stdout] ; [INFO] [stdout] } "email" => [INFO] [stdout] { return rbson :: to_bson(& self.email).unwrap_or_default() ; } [INFO] [stdout] "phonenumber" => [INFO] [stdout] { [INFO] [stdout] return rbson :: [INFO] [stdout] to_bson(& self.phonenumber).unwrap_or_default() ; [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] "password" => [INFO] [stdout] { return rbson :: to_bson(& self.password).unwrap_or_default() ; } [INFO] [stdout] "birthday" => [INFO] [stdout] { return rbson :: to_bson(& self.birthday).unwrap_or_default() ; } [INFO] [stdout] "nation" => [INFO] [stdout] { return rbson :: to_bson(& self.nation).unwrap_or_default() ; } [INFO] [stdout] "birth_address" => [INFO] [stdout] { [INFO] [stdout] return rbson :: [INFO] [stdout] to_bson(& self.birth_address).unwrap_or_default() ; [INFO] [stdout] } "polity" => [INFO] [stdout] { return rbson :: to_bson(& self.polity).unwrap_or_default() ; } [INFO] [stdout] "title" => [INFO] [stdout] { return rbson :: to_bson(& self.title).unwrap_or_default() ; } [INFO] [stdout] "office_tel" => [INFO] [stdout] { [INFO] [stdout] return rbson :: to_bson(& self.office_tel).unwrap_or_default() [INFO] [stdout] ; [INFO] [stdout] } "fax" => [INFO] [stdout] { return rbson :: to_bson(& self.fax).unwrap_or_default() ; } [INFO] [stdout] "work_space" => [INFO] [stdout] { [INFO] [stdout] return rbson :: to_bson(& self.work_space).unwrap_or_default() [INFO] [stdout] ; [INFO] [stdout] } "sort" => [INFO] [stdout] { return rbson :: to_bson(& self.sort).unwrap_or_default() ; } [INFO] [stdout] "user_pinyin" => [INFO] [stdout] { [INFO] [stdout] return rbson :: [INFO] [stdout] to_bson(& self.user_pinyin).unwrap_or_default() ; [INFO] [stdout] } "status" => [INFO] [stdout] { return rbson :: to_bson(& self.status).unwrap_or_default() ; } [INFO] [stdout] "del_flag" => [INFO] [stdout] { return rbson :: to_bson(& self.del_flag).unwrap_or_default() ; } [INFO] [stdout] "login_ip" => [INFO] [stdout] { return rbson :: to_bson(& self.login_ip).unwrap_or_default() ; } [INFO] [stdout] "login_date" => [INFO] [stdout] { [INFO] [stdout] return rbson :: to_bson(& self.login_date).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_dept" => [INFO] [stdout] { [INFO] [stdout] return rbson :: [INFO] [stdout] to_bson(& self.create_dept).unwrap_or_default() ; [INFO] [stdout] } "create_time" => [INFO] [stdout] { [INFO] [stdout] return rbson :: [INFO] [stdout] to_bson(& self.create_time).unwrap_or_default() ; [INFO] [stdout] } "update_by" => [INFO] [stdout] { [INFO] [stdout] return rbson :: to_bson(& self.update_by).unwrap_or_default() [INFO] [stdout] ; [INFO] [stdout] } "update_time" => [INFO] [stdout] { [INFO] [stdout] return rbson :: [INFO] [stdout] to_bson(& self.update_time).unwrap_or_default() ; [INFO] [stdout] } "update_ip" => [INFO] [stdout] { [INFO] [stdout] return rbson :: to_bson(& self.update_ip).unwrap_or_default() [INFO] [stdout] ; [INFO] [stdout] } "remark" => [INFO] [stdout] { return rbson :: to_bson(& self.remark).unwrap_or_default() ; } [INFO] [stdout] "version" => [INFO] [stdout] { return rbson :: to_bson(& self.version).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,dept_id,name,name_en,no,user_name,nick_name,user_type,email,phonenumber,sex,avatar,password,birthday,nation,birth_address,polity,title,office_tel,fax,work_space,sort,user_pinyin,status,del_flag,login_ip,login_date,create_by,create_dept,create_time,update_by,update_time,update_ip,remark,version".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(Default, Clone, Debug, Serialize, Deserialize, Validate)] [INFO] [stdout] #[serde(rename_all(serialize = "camelCase"))] pub struct SysConfig [INFO] [stdout] { [INFO] [stdout] /// 参数名称 [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] /// 系统内置(Y是 N否) [INFO] [stdout] #[validate(length(max = 1))] pub config_type : Option < String >, [INFO] [stdout] /// 创建者 [INFO] [stdout] #[validate(length(max = 64))] pub create_by : Option < String >, [INFO] [stdout] /// 创建时间 [INFO] [stdout] pub create_time : Option < rbatis :: DateTimeNative >, /// 更新者 [INFO] [stdout] #[validate(length(max = 64))] pub update_by : Option < String >, [INFO] [stdout] /// 更新时间 [INFO] [stdout] pub update_time : Option < rbatis :: DateTimeNative >, /// 备注 [INFO] [stdout] #[validate(length(max = 500))] pub remark : Option < String >, [INFO] [stdout] /// 岗位ID [INFO] [stdout] #[validate(length(max = 64))] pub id : Option < String >, /// 版本 [INFO] [stdout] pub version : Option < i32 >, [INFO] [stdout] /// 删除标志(0代表存在 1代表删除) [INFO] [stdout] #[validate(length(max = 1))] pub del_flag : Option < String >, [INFO] [stdout] /// 更新IP [INFO] [stdout] #[validate(length(max = 128))] pub update_ip : Option < String >, [INFO] [stdout] /// 创建部门 [INFO] [stdout] #[validate(length(max = 64))] pub create_dept : Option < String >, [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] "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] } "create_by" => [INFO] [stdout] { [INFO] [stdout] return rbson :: to_bson(& self.create_by).unwrap_or_default() [INFO] [stdout] ; [INFO] [stdout] } "create_time" => [INFO] [stdout] { [INFO] [stdout] return rbson :: [INFO] [stdout] to_bson(& self.create_time).unwrap_or_default() ; [INFO] [stdout] } "update_by" => [INFO] [stdout] { [INFO] [stdout] return rbson :: to_bson(& self.update_by).unwrap_or_default() [INFO] [stdout] ; [INFO] [stdout] } "update_time" => [INFO] [stdout] { [INFO] [stdout] return rbson :: [INFO] [stdout] to_bson(& self.update_time).unwrap_or_default() ; [INFO] [stdout] } "remark" => [INFO] [stdout] { return rbson :: to_bson(& self.remark).unwrap_or_default() ; } [INFO] [stdout] "id" => [INFO] [stdout] { return rbson :: to_bson(& self.id).unwrap_or_default() ; } [INFO] [stdout] "version" => [INFO] [stdout] { return rbson :: to_bson(& self.version).unwrap_or_default() ; } [INFO] [stdout] "del_flag" => [INFO] [stdout] { return rbson :: to_bson(& self.del_flag).unwrap_or_default() ; } [INFO] [stdout] "update_ip" => [INFO] [stdout] { [INFO] [stdout] return rbson :: to_bson(& self.update_ip).unwrap_or_default() [INFO] [stdout] ; [INFO] [stdout] } "create_dept" => [INFO] [stdout] { [INFO] [stdout] return rbson :: [INFO] [stdout] to_bson(& self.create_dept).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] "config_name,config_key,config_value,config_type,create_by,create_time,update_by,update_time,remark,id,version,del_flag,update_ip,create_dept".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, Serialize, Deserialize, [INFO] [stdout] Validate)] #[serde(rename_all(serialize = "camelCase"))] pub struct SysNotice [INFO] [stdout] { [INFO] [stdout] /// id [INFO] [stdout] #[validate(length(max = 64))] pub id : Option < String >, /// 公告标题 [INFO] [stdout] #[validate(length(max = 50))] pub notice_title : Option < String >, [INFO] [stdout] /// 公告类型(1通知 2公告) [INFO] [stdout] #[validate(length(max = 1))] pub notice_type : Option < String >, [INFO] [stdout] /// 公告内容 [INFO] [stdout] pub notice_content : Option < Vec < u8 >>, /// 公告内容HTML [INFO] [stdout] pub notice_content_html : Option < Vec < u8 >>, [INFO] [stdout] /// 公告状态(0正常 1关闭) [INFO] [stdout] #[validate(length(max = 1))] pub status : Option < String >, /// 创建者 [INFO] [stdout] #[validate(length(max = 64))] pub create_by : Option < String >, [INFO] [stdout] /// 创建时间 [INFO] [stdout] pub create_time : Option < rbatis :: DateTimeNative >, /// 更新者 [INFO] [stdout] #[validate(length(max = 64))] pub update_by : Option < String >, [INFO] [stdout] /// 更新时间 [INFO] [stdout] pub update_time : Option < rbatis :: DateTimeNative >, /// 备注 [INFO] [stdout] #[validate(length(max = 255))] pub remark : Option < String >, /// 版本 [INFO] [stdout] pub version : Option < i32 >, [INFO] [stdout] /// 删除标志(0代表存在 1代表删除) [INFO] [stdout] #[validate(length(max = 1))] pub del_flag : Option < String >, [INFO] [stdout] /// 更新IP [INFO] [stdout] #[validate(length(max = 128))] pub update_ip : Option < String >, [INFO] [stdout] /// 创建部门 [INFO] [stdout] #[validate(length(max = 64))] pub create_dept : Option < String >, [INFO] [stdout] } impl rbatis :: crud :: CRUDTable for SysNotice [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] "notice_title" => [INFO] [stdout] { [INFO] [stdout] return rbson :: [INFO] [stdout] to_bson(& self.notice_title).unwrap_or_default() ; [INFO] [stdout] } "notice_type" => [INFO] [stdout] { [INFO] [stdout] return rbson :: [INFO] [stdout] to_bson(& self.notice_type).unwrap_or_default() ; [INFO] [stdout] } "notice_content" => [INFO] [stdout] { [INFO] [stdout] return rbson :: [INFO] [stdout] to_bson(& self.notice_content).unwrap_or_default() ; [INFO] [stdout] } "notice_content_html" => [INFO] [stdout] { [INFO] [stdout] return rbson :: [INFO] [stdout] to_bson(& self.notice_content_html).unwrap_or_default() ; [INFO] [stdout] } "status" => [INFO] [stdout] { return rbson :: to_bson(& self.status).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_time" => [INFO] [stdout] { [INFO] [stdout] return rbson :: [INFO] [stdout] to_bson(& self.create_time).unwrap_or_default() ; [INFO] [stdout] } "update_by" => [INFO] [stdout] { [INFO] [stdout] return rbson :: to_bson(& self.update_by).unwrap_or_default() [INFO] [stdout] ; [INFO] [stdout] } "update_time" => [INFO] [stdout] { [INFO] [stdout] return rbson :: [INFO] [stdout] to_bson(& self.update_time).unwrap_or_default() ; [INFO] [stdout] } "remark" => [INFO] [stdout] { return rbson :: to_bson(& self.remark).unwrap_or_default() ; } [INFO] [stdout] "version" => [INFO] [stdout] { return rbson :: to_bson(& self.version).unwrap_or_default() ; } [INFO] [stdout] "del_flag" => [INFO] [stdout] { return rbson :: to_bson(& self.del_flag).unwrap_or_default() ; } [INFO] [stdout] "update_ip" => [INFO] [stdout] { [INFO] [stdout] return rbson :: to_bson(& self.update_ip).unwrap_or_default() [INFO] [stdout] ; [INFO] [stdout] } "create_dept" => [INFO] [stdout] { [INFO] [stdout] return rbson :: [INFO] [stdout] to_bson(& self.create_dept).unwrap_or_default() ; [INFO] [stdout] } _ => { rbson :: Bson :: Null } [INFO] [stdout] } [INFO] [stdout] } fn table_name() -> String { "sys_notice".to_string() } fn [INFO] [stdout] table_columns() -> String [INFO] [stdout] { [INFO] [stdout] "id,notice_title,notice_type,notice_content,notice_content_html,status,create_by,create_time,update_by,update_time,remark,version,del_flag,update_ip,create_dept".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, Serialize, Hash, Deserialize, [INFO] [stdout] Validate)] #[serde(rename_all(serialize = "camelCase"))] pub struct SysMenu [INFO] [stdout] { [INFO] [stdout] /// ID [INFO] [stdout] #[validate(length(max = 64))] pub id : Option < String >, /// 菜单编码 [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] #[validate(length(max = 64))] pub parent_id : Option < String >, [INFO] [stdout] /// 显示顺序 [INFO] [stdout] pub sort : Option < i32 >, /// 路由地址 [INFO] [stdout] #[validate(length(max = 200))] pub path : Option < String >, [INFO] [stdout] /// 组件路径 [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 >, [INFO] [stdout] /// 菜单类型(M目录 C菜单 F按钮) [INFO] [stdout] #[validate(length(max = 1))] pub menu_type : Option < String >, [INFO] [stdout] /// 菜单状态(0显示 1隐藏) [INFO] [stdout] #[validate(length(max = 1))] pub visible : Option < String >, [INFO] [stdout] /// 菜单状态(0正常 1停用) [INFO] [stdout] #[validate(length(max = 1))] pub status : Option < String >, [INFO] [stdout] /// 权限标识 [INFO] [stdout] #[validate(length(max = 100))] pub perms : Option < String >, [INFO] [stdout] /// 菜单图标 [INFO] [stdout] #[validate(length(max = 100))] pub icon : Option < String >, /// 创建者 [INFO] [stdout] #[validate(length(max = 64))] pub create_by : Option < String >, [INFO] [stdout] /// 创建时间 [INFO] [stdout] pub create_time : Option < rbatis :: DateTimeNative >, /// 更新者 [INFO] [stdout] #[validate(length(max = 64))] pub update_by : Option < String >, [INFO] [stdout] /// 更新时间 [INFO] [stdout] pub update_time : Option < rbatis :: DateTimeNative >, /// 备注 [INFO] [stdout] #[validate(length(max = 500))] pub remark : Option < String >, [INFO] [stdout] /// 父id集合 [INFO] [stdout] #[validate(length(max = 500))] pub parent_ids : Option < String >, [INFO] [stdout] /// 排序 [INFO] [stdout] pub tree_sort : Option < i32 >, /// 排序集合 [INFO] [stdout] #[validate(length(max = 500))] pub tree_sorts : Option < String >, [INFO] [stdout] /// 层级 [INFO] [stdout] pub tree_level : Option < i32 >, /// 是否子节点(0是 1否) [INFO] [stdout] #[validate(length(max = 1))] pub tree_leaf : Option < String >, [INFO] [stdout] /// 创建部门 [INFO] [stdout] #[validate(length(max = 64))] pub create_dept : Option < String >, [INFO] [stdout] /// 更新IP [INFO] [stdout] #[validate(length(max = 128))] pub update_ip : Option < String >, [INFO] [stdout] /// 版本 [INFO] [stdout] pub version : Option < i32 >, [INFO] [stdout] /// 删除标志(0代表存在 1代表删除) [INFO] [stdout] #[validate(length(max = 1))] pub del_flag : Option < String >, [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] } "parent_id" => [INFO] [stdout] { [INFO] [stdout] return rbson :: to_bson(& self.parent_id).unwrap_or_default() [INFO] [stdout] ; [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] "create_by" => [INFO] [stdout] { [INFO] [stdout] return rbson :: to_bson(& self.create_by).unwrap_or_default() [INFO] [stdout] ; [INFO] [stdout] } "create_time" => [INFO] [stdout] { [INFO] [stdout] return rbson :: [INFO] [stdout] to_bson(& self.create_time).unwrap_or_default() ; [INFO] [stdout] } "update_by" => [INFO] [stdout] { [INFO] [stdout] return rbson :: to_bson(& self.update_by).unwrap_or_default() [INFO] [stdout] ; [INFO] [stdout] } "update_time" => [INFO] [stdout] { [INFO] [stdout] return rbson :: [INFO] [stdout] to_bson(& self.update_time).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_dept" => [INFO] [stdout] { [INFO] [stdout] return rbson :: [INFO] [stdout] to_bson(& self.create_dept).unwrap_or_default() ; [INFO] [stdout] } "update_ip" => [INFO] [stdout] { [INFO] [stdout] return rbson :: to_bson(& self.update_ip).unwrap_or_default() [INFO] [stdout] ; [INFO] [stdout] } "version" => [INFO] [stdout] { return rbson :: to_bson(& self.version).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_menu".to_string() } fn table_columns() [INFO] [stdout] -> String [INFO] [stdout] { [INFO] [stdout] "id,menu_code,menu_name,parent_id,sort,path,component,is_frame,is_cache,menu_type,visible,status,perms,icon,create_by,create_time,update_by,update_time,remark,parent_ids,tree_sort,tree_sorts,tree_level,tree_leaf,create_dept,update_ip,version,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, Serialize, Deserialize, [INFO] [stdout] Validate)] #[serde(rename_all(serialize = "camelCase"))] pub struct [INFO] [stdout] GenConfigTemplate [INFO] [stdout] { [INFO] [stdout] /// 主键ID [INFO] [stdout] #[validate(length(max = 50))] pub id : Option < String >, /// 模板名称 [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] #[validate(length(max = 1))] pub status : Option < String >, /// 创建者 [INFO] [stdout] #[validate(length(max = 64))] pub create_by : Option < String >, [INFO] [stdout] /// 创建部门 [INFO] [stdout] #[validate(length(max = 64))] pub create_dept : Option < String >, [INFO] [stdout] /// 创建时间 [INFO] [stdout] pub create_time : Option < rbatis :: DateTimeNative >, /// 更新者 [INFO] [stdout] #[validate(length(max = 64))] pub update_by : Option < String >, [INFO] [stdout] /// 更新时间 [INFO] [stdout] pub update_time : Option < rbatis :: DateTimeNative >, /// 更新IP [INFO] [stdout] #[validate(length(max = 128))] pub update_ip : Option < String >, [INFO] [stdout] /// 备注 [INFO] [stdout] #[validate(length(max = 500))] pub remark : Option < String >, /// 版本 [INFO] [stdout] pub version : Option < i32 >, [INFO] [stdout] /// 删除标志(0代表存在 1代表删除) [INFO] [stdout] #[validate(length(max = 1))] pub del_flag : Option < String >, [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] "create_by" => [INFO] [stdout] { [INFO] [stdout] return rbson :: to_bson(& self.create_by).unwrap_or_default() [INFO] [stdout] ; [INFO] [stdout] } "create_dept" => [INFO] [stdout] { [INFO] [stdout] return rbson :: [INFO] [stdout] to_bson(& self.create_dept).unwrap_or_default() ; [INFO] [stdout] } "create_time" => [INFO] [stdout] { [INFO] [stdout] return rbson :: [INFO] [stdout] to_bson(& self.create_time).unwrap_or_default() ; [INFO] [stdout] } "update_by" => [INFO] [stdout] { [INFO] [stdout] return rbson :: to_bson(& self.update_by).unwrap_or_default() [INFO] [stdout] ; [INFO] [stdout] } "update_time" => [INFO] [stdout] { [INFO] [stdout] return rbson :: [INFO] [stdout] to_bson(& self.update_time).unwrap_or_default() ; [INFO] [stdout] } "update_ip" => [INFO] [stdout] { [INFO] [stdout] return rbson :: to_bson(& self.update_ip).unwrap_or_default() [INFO] [stdout] ; [INFO] [stdout] } "remark" => [INFO] [stdout] { return rbson :: to_bson(& self.remark).unwrap_or_default() ; } [INFO] [stdout] "version" => [INFO] [stdout] { return rbson :: to_bson(& self.version).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 { "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,create_by,create_dept,create_time,update_by,update_time,update_ip,remark,version,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, Serialize, Deserialize, [INFO] [stdout] Validate)] #[serde(rename_all(serialize = "camelCase"))] pub struct GenTable [INFO] [stdout] { [INFO] [stdout] /// 编号 [INFO] [stdout] pub table_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] #[validate(length(max = 1))] pub gen_type : Option < String >, /// [INFO] [stdout] #[validate(length(max = 4000))] pub options : Option < String >, [INFO] [stdout] /// 创建者 [INFO] [stdout] #[validate(length(max = 64))] pub create_by : Option < String >, [INFO] [stdout] /// 创建时间 [INFO] [stdout] pub create_time : Option < rbatis :: DateTimeUtc >, /// 更新者 [INFO] [stdout] #[validate(length(max = 64))] pub update_by : Option < String >, [INFO] [stdout] /// 更新时间 [INFO] [stdout] pub update_time : Option < rbatis :: DateTimeNative >, /// 备注 [INFO] [stdout] #[validate(length(max = 500))] pub remark : Option < String >, [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] "table_id" => [INFO] [stdout] { return rbson :: to_bson(& self.table_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] "create_by" => [INFO] [stdout] { [INFO] [stdout] return rbson :: to_bson(& self.create_by).unwrap_or_default() [INFO] [stdout] ; [INFO] [stdout] } "create_time" => [INFO] [stdout] { [INFO] [stdout] return rbson :: [INFO] [stdout] to_bson(& self.create_time).unwrap_or_default() ; [INFO] [stdout] } "update_by" => [INFO] [stdout] { [INFO] [stdout] return rbson :: to_bson(& self.update_by).unwrap_or_default() [INFO] [stdout] ; [INFO] [stdout] } "update_time" => [INFO] [stdout] { [INFO] [stdout] return rbson :: [INFO] [stdout] to_bson(& self.update_time).unwrap_or_default() ; [INFO] [stdout] } "remark" => [INFO] [stdout] { return rbson :: to_bson(& self.remark).unwrap_or_default() ; } _ [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] "table_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,create_by,create_time,update_by,update_time,remark".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, Serialize, Deserialize, [INFO] [stdout] Validate)] #[serde(rename_all(serialize = "camelCase"))] pub struct [INFO] [stdout] GenTableColumn [INFO] [stdout] { [INFO] [stdout] /// 编号 [INFO] [stdout] pub column_id : Option < i64 >, /// 归属表编号 [INFO] [stdout] #[validate(length(max = 64))] pub table_id : Option < String >, [INFO] [stdout] /// 列名称 [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_new_row : Option < String >, [INFO] [stdout] /// 列数 [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] /// 排序 [INFO] [stdout] pub sort : Option < i32 >, /// 创建者 [INFO] [stdout] #[validate(length(max = 64))] pub create_by : Option < String >, [INFO] [stdout] /// 创建时间 [INFO] [stdout] pub create_time : Option < rbatis :: DateTimeNative >, /// 更新者 [INFO] [stdout] #[validate(length(max = 64))] pub update_by : Option < String >, [INFO] [stdout] /// 更新时间 [INFO] [stdout] pub update_time : 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] "column_id" => [INFO] [stdout] { [INFO] [stdout] return rbson :: to_bson(& self.column_id).unwrap_or_default() [INFO] [stdout] ; [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_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_time" => [INFO] [stdout] { [INFO] [stdout] return rbson :: [INFO] [stdout] to_bson(& self.create_time).unwrap_or_default() ; [INFO] [stdout] } "update_by" => [INFO] [stdout] { [INFO] [stdout] return rbson :: to_bson(& self.update_by).unwrap_or_default() [INFO] [stdout] ; [INFO] [stdout] } "update_time" => [INFO] [stdout] { [INFO] [stdout] return rbson :: [INFO] [stdout] to_bson(& self.update_time).unwrap_or_default() ; [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] "column_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_new_row,col_span,align_type,query_type,html_type,dict_type,col_check,sort,create_by,create_time,update_by,update_time".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] warning: 1 warning emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Compiling crab-service v0.1.0 (/opt/rustwide/workdir/crab-service) [INFO] [stderr] Compiling crab-cache v0.1.0 (/opt/rustwide/workdir/crab-cache) [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 7m 32s [INFO] running `Command { std: "docker" "inspect" "c6dc64d1d027a30f22d74f36e4140d7c5b1a72ca9e3569b41c026041cc9651f8", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "c6dc64d1d027a30f22d74f36e4140d7c5b1a72ca9e3569b41c026041cc9651f8", kill_on_drop: false }` [INFO] [stdout] c6dc64d1d027a30f22d74f36e4140d7c5b1a72ca9e3569b41c026041cc9651f8 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1/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" "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:b0c94ce3c1162fcb8e57cac5b65ec2f72eabb1eebea4fcc35e269e823f681646" "/opt/rustwide/cargo-home/bin/cargo" "+1b74e096b9bfb06f84a3007193dcd2f059cbdf6a" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap. [INFO] [stdout] d4fc7eab7c7e694f90ad2c69438c971286d7374743cb4f7dd105ee6eb8417d2a [INFO] running `Command { std: "docker" "start" "-a" "d4fc7eab7c7e694f90ad2c69438c971286d7374743cb4f7dd105ee6eb8417d2a", kill_on_drop: false }` [INFO] [stderr] Compiling crab-util v0.1.0 (/opt/rustwide/workdir/crab-util) [INFO] [stderr] Compiling async-stream-impl v0.3.3 [INFO] [stderr] Compiling crab-excel-derive v0.1.0 (/opt/rustwide/workdir/crab-excel-derive) [INFO] [stdout] warning: unused `#[macro_use]` import [INFO] [stdout] --> crab-lib/src/lib.rs:2:1 [INFO] [stdout] | [INFO] [stdout] 2 | #[macro_use] [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `#[macro_use]` import [INFO] [stdout] --> crab-lib/src/lib.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 | #[macro_use] [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `#[macro_use]` import [INFO] [stdout] --> crab-lib/src/lib.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | #[macro_use] [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 3 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::*` [INFO] [stdout] --> crab-config/src/lib.rs:64:9 [INFO] [stdout] | [INFO] [stdout] 64 | use super::*; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] help: consider adding a `#[cfg(test)]` to the containing module [INFO] [stdout] --> crab-config/src/lib.rs:63:1 [INFO] [stdout] | [INFO] [stdout] 63 | mod test { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 1 warning emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Compiling crab-config v0.1.0 (/opt/rustwide/workdir/crab-config) [INFO] [stderr] Compiling crab-common v0.1.0 (/opt/rustwide/workdir/crab-common) [INFO] [stderr] Compiling crab-excel v0.1.0 (/opt/rustwide/workdir/crab-excel) [INFO] [stderr] Compiling crab-model v0.1.0 (/opt/rustwide/workdir/crab-model) [INFO] [stdout] warning: unused import: `rbatis::crud::CRUD` [INFO] [stdout] --> generator/src/sqlite.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use rbatis::crud::CRUD; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 1 warning emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Compiling crab-service v0.1.0 (/opt/rustwide/workdir/crab-service) [INFO] [stderr] Compiling crab-cache v0.1.0 (/opt/rustwide/workdir/crab-cache) [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: field is never read: `id` [INFO] [stdout] --> crab-excel/tests/excel_writer.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | id: u32, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] note: `TestExcel` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] --> crab-excel/tests/excel_writer.rs:4:10 [INFO] [stdout] | [INFO] [stdout] 4 | #[derive(Debug, Default, ExcelWriter)] [INFO] [stdout] | ^^^^^ [INFO] [stdout] = note: this warning originates in the derive macro `Debug` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field is never read: `roles` [INFO] [stdout] --> crab-excel/tests/excel_writer.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | roles: Vec, [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] --> crab-excel/tests/excel_writer.rs:4:10 [INFO] [stdout] | [INFO] [stdout] 4 | #[derive(Debug, Default, ExcelWriter)] [INFO] [stdout] | ^^^^^ [INFO] [stdout] = note: this warning originates in the derive macro `Debug` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field is never read: `del` [INFO] [stdout] --> crab-excel/tests/excel_writer.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | del: u8, [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] --> crab-excel/tests/excel_writer.rs:4:10 [INFO] [stdout] | [INFO] [stdout] 4 | #[derive(Debug, Default, ExcelWriter)] [INFO] [stdout] | ^^^^^ [INFO] [stdout] = note: this warning originates in the derive macro `Debug` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field is never read: `date` [INFO] [stdout] --> crab-excel/tests/excel_writer.rs:15:5 [INFO] [stdout] | [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] --> crab-excel/tests/excel_writer.rs:4:10 [INFO] [stdout] | [INFO] [stdout] 4 | #[derive(Debug, Default, ExcelWriter)] [INFO] [stdout] | ^^^^^ [INFO] [stdout] = note: this warning originates in the derive macro `Debug` (in Nightly builds, run with -Z macro-backtrace for more info) [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: `#[warn(unused_must_use)]` on by default [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [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] ............gen impl CRUDTable: [INFO] [stdout] /// 用户信息表 [INFO] [stdout] #[derive(Default, Clone, Debug, Serialize, Deserialize, Validate)] [INFO] [stdout] #[serde(rename_all(serialize = "camelCase"))] pub struct SysUser [INFO] [stdout] { [INFO] [stdout] /// 用户ID [INFO] [stdout] #[validate(length(max = 64))] pub id : Option < String >, /// 部门ID [INFO] [stdout] #[validate(length(max = 50))] pub dept_id : Option < String >, /// 姓名 [INFO] [stdout] #[validate(length(max = 50))] pub name : Option < String >, /// 英文名 [INFO] [stdout] #[validate(length(max = 50))] pub name_en : Option < String >, [INFO] [stdout] /// 用户编号 [INFO] [stdout] #[validate(length(max = 50))] pub no : Option < String >, /// 登陆名称 [INFO] [stdout] #[validate(length(max = 30))] pub user_name : Option < String >, [INFO] [stdout] /// 别称 [INFO] [stdout] #[validate(length(max = 30))] pub nick_name : Option < String >, [INFO] [stdout] /// 前后台类型标识 0:后台用户 1:前台用户 [INFO] [stdout] #[validate(length(max = 2))] pub user_type : Option < String >, [INFO] [stdout] /// 用户邮箱 [INFO] [stdout] #[validate(length(max = 50))] pub email : Option < String >, [INFO] [stdout] /// 手机号码 [INFO] [stdout] #[validate(length(max = 11))] pub phonenumber : 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] #[validate(length(max = 100))] pub password : Option < String >, [INFO] [stdout] /// 生日 [INFO] [stdout] pub birthday : Option < rbatis :: DateNative >, /// 民族 [INFO] [stdout] #[validate(length(max = 100))] pub nation : Option < String >, /// 籍贯 [INFO] [stdout] #[validate(length(max = 100))] pub birth_address : Option < String >, [INFO] [stdout] /// 政治面貌 [INFO] [stdout] #[validate(length(max = 50))] pub polity : Option < String >, /// 职称 [INFO] [stdout] #[validate(length(max = 100))] pub title : Option < String >, [INFO] [stdout] /// 办公电话 [INFO] [stdout] #[validate(length(max = 50))] pub office_tel : Option < String >, [INFO] [stdout] /// 传真号 [INFO] [stdout] #[validate(length(max = 50))] pub fax : Option < String >, [INFO] [stdout] /// 工作地点 [INFO] [stdout] #[validate(length(max = 100))] pub work_space : Option < String >, [INFO] [stdout] /// 排序号 [INFO] [stdout] pub sort : Option < i32 >, /// 用户姓名全拼和简拼 [INFO] [stdout] #[validate(length(max = 500))] pub user_pinyin : Option < String >, [INFO] [stdout] /// 帐号状态(0正常 1停用) [INFO] [stdout] #[validate(length(max = 1))] pub status : Option < String >, [INFO] [stdout] /// 删除标志(0代表存在 2代表删除) [INFO] [stdout] #[validate(length(max = 1))] pub del_flag : Option < String >, [INFO] [stdout] /// 最后登录IP [INFO] [stdout] #[validate(length(max = 128))] pub login_ip : Option < String >, [INFO] [stdout] /// 最后登录时间 [INFO] [stdout] pub login_date : Option < rbatis :: DateTimeNative >, /// 创建者 [INFO] [stdout] #[validate(length(max = 64))] pub create_by : Option < String >, [INFO] [stdout] /// 创建部门 [INFO] [stdout] #[validate(length(max = 64))] pub create_dept : Option < String >, [INFO] [stdout] /// 创建时间 [INFO] [stdout] pub create_time : Option < rbatis :: DateTimeNative >, /// 更新者 [INFO] [stdout] #[validate(length(max = 64))] pub update_by : Option < String >, [INFO] [stdout] /// 更新时间 [INFO] [stdout] pub update_time : Option < rbatis :: DateTimeNative >, /// 更新IP [INFO] [stdout] #[validate(length(max = 128))] pub update_ip : Option < String >, [INFO] [stdout] /// 备注 [INFO] [stdout] #[validate(length(max = 500))] pub remark : Option < String >, /// 版本 [INFO] [stdout] pub version : Option < i32 >, [INFO] [stdout] } impl rbatis :: crud :: CRUDTable for SysUser [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] "dept_id" => [INFO] [stdout] { return rbson :: to_bson(& self.dept_id).unwrap_or_default() ; } [INFO] [stdout] "name" => [INFO] [stdout] { return rbson :: to_bson(& self.name).unwrap_or_default() ; } [INFO] [stdout] "name_en" => [INFO] [stdout] { return rbson :: to_bson(& self.name_en).unwrap_or_default() ; } [INFO] [stdout] "no" => [INFO] [stdout] { return rbson :: to_bson(& self.no).unwrap_or_default() ; } [INFO] [stdout] "user_name" => [INFO] [stdout] { [INFO] [stdout] return rbson :: to_bson(& self.user_name).unwrap_or_default() [INFO] [stdout] ; [INFO] [stdout] } "nick_name" => [INFO] [stdout] { [INFO] [stdout] return rbson :: to_bson(& self.nick_name).unwrap_or_default() [INFO] [stdout] ; [INFO] [stdout] } "user_type" => [INFO] [stdout] { [INFO] [stdout] return rbson :: to_bson(& self.user_type).unwrap_or_default() [INFO] [stdout] ; [INFO] [stdout] } "email" => [INFO] [stdout] { return rbson :: to_bson(& self.email).unwrap_or_default() ; } [INFO] [stdout] "phonenumber" => [INFO] [stdout] { [INFO] [stdout] return rbson :: [INFO] [stdout] to_bson(& self.phonenumber).unwrap_or_default() ; [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] "password" => [INFO] [stdout] { return rbson :: to_bson(& self.password).unwrap_or_default() ; } [INFO] [stdout] "birthday" => [INFO] [stdout] { return rbson :: to_bson(& self.birthday).unwrap_or_default() ; } [INFO] [stdout] "nation" => [INFO] [stdout] { return rbson :: to_bson(& self.nation).unwrap_or_default() ; } [INFO] [stdout] "birth_address" => [INFO] [stdout] { [INFO] [stdout] return rbson :: [INFO] [stdout] to_bson(& self.birth_address).unwrap_or_default() ; [INFO] [stdout] } "polity" => [INFO] [stdout] { return rbson :: to_bson(& self.polity).unwrap_or_default() ; } [INFO] [stdout] "title" => [INFO] [stdout] { return rbson :: to_bson(& self.title).unwrap_or_default() ; } [INFO] [stdout] "office_tel" => [INFO] [stdout] { [INFO] [stdout] return rbson :: to_bson(& self.office_tel).unwrap_or_default() [INFO] [stdout] ; [INFO] [stdout] } "fax" => [INFO] [stdout] { return rbson :: to_bson(& self.fax).unwrap_or_default() ; } [INFO] [stdout] "work_space" => [INFO] [stdout] { [INFO] [stdout] return rbson :: to_bson(& self.work_space).unwrap_or_default() [INFO] [stdout] ; [INFO] [stdout] } "sort" => [INFO] [stdout] { return rbson :: to_bson(& self.sort).unwrap_or_default() ; } [INFO] [stdout] "user_pinyin" => [INFO] [stdout] { [INFO] [stdout] return rbson :: [INFO] [stdout] to_bson(& self.user_pinyin).unwrap_or_default() ; [INFO] [stdout] } "status" => [INFO] [stdout] { return rbson :: to_bson(& self.status).unwrap_or_default() ; } [INFO] [stdout] "del_flag" => [INFO] [stdout] { return rbson :: to_bson(& self.del_flag).unwrap_or_default() ; } [INFO] [stdout] "login_ip" => [INFO] [stdout] { return rbson :: to_bson(& self.login_ip).unwrap_or_default() ; } [INFO] [stdout] "login_date" => [INFO] [stdout] { [INFO] [stdout] return rbson :: to_bson(& self.login_date).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_dept" => [INFO] [stdout] { [INFO] [stdout] return rbson :: [INFO] [stdout] to_bson(& self.create_dept).unwrap_or_default() ; [INFO] [stdout] } "create_time" => [INFO] [stdout] { [INFO] [stdout] return rbson :: [INFO] [stdout] to_bson(& self.create_time).unwrap_or_default() ; [INFO] [stdout] } "update_by" => [INFO] [stdout] { [INFO] [stdout] return rbson :: to_bson(& self.update_by).unwrap_or_default() [INFO] [stdout] ; [INFO] [stdout] } "update_time" => [INFO] [stdout] { [INFO] [stdout] return rbson :: [INFO] [stdout] to_bson(& self.update_time).unwrap_or_default() ; [INFO] [stdout] } "update_ip" => [INFO] [stdout] { [INFO] [stdout] return rbson :: to_bson(& self.update_ip).unwrap_or_default() [INFO] [stdout] ; [INFO] [stdout] } "remark" => [INFO] [stdout] { return rbson :: to_bson(& self.remark).unwrap_or_default() ; } [INFO] [stdout] "version" => [INFO] [stdout] { return rbson :: to_bson(& self.version).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,dept_id,name,name_en,no,user_name,nick_name,user_type,email,phonenumber,sex,avatar,password,birthday,nation,birth_address,polity,title,office_tel,fax,work_space,sort,user_pinyin,status,del_flag,login_ip,login_date,create_by,create_dept,create_time,update_by,update_time,update_ip,remark,version".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] warning: 5 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] ............gen impl CRUDTable: [INFO] [stdout] /// 参数配置表 [INFO] [stdout] #[derive(Default, Clone, Debug, Serialize, Deserialize, Validate)] [INFO] [stdout] #[serde(rename_all(serialize = "camelCase"))] pub struct SysConfig [INFO] [stdout] { [INFO] [stdout] /// 参数名称 [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] /// 系统内置(Y是 N否) [INFO] [stdout] #[validate(length(max = 1))] pub config_type : Option < String >, [INFO] [stdout] /// 创建者 [INFO] [stdout] #[validate(length(max = 64))] pub create_by : Option < String >, [INFO] [stdout] /// 创建时间 [INFO] [stdout] pub create_time : Option < rbatis :: DateTimeNative >, /// 更新者 [INFO] [stdout] #[validate(length(max = 64))] pub update_by : Option < String >, [INFO] [stdout] /// 更新时间 [INFO] [stdout] pub update_time : Option < rbatis :: DateTimeNative >, /// 备注 [INFO] [stdout] #[validate(length(max = 500))] pub remark : Option < String >, [INFO] [stdout] /// 岗位ID [INFO] [stdout] #[validate(length(max = 64))] pub id : Option < String >, /// 版本 [INFO] [stdout] pub version : Option < i32 >, [INFO] [stdout] /// 删除标志(0代表存在 1代表删除) [INFO] [stdout] #[validate(length(max = 1))] pub del_flag : Option < String >, [INFO] [stdout] /// 更新IP [INFO] [stdout] #[validate(length(max = 128))] pub update_ip : Option < String >, [INFO] [stdout] /// 创建部门 [INFO] [stdout] #[validate(length(max = 64))] pub create_dept : Option < String >, [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] "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] } "create_by" => [INFO] [stdout] { [INFO] [stdout] return rbson :: to_bson(& self.create_by).unwrap_or_default() [INFO] [stdout] ; [INFO] [stdout] } "create_time" => [INFO] [stdout] { [INFO] [stdout] return rbson :: [INFO] [stdout] to_bson(& self.create_time).unwrap_or_default() ; [INFO] [stdout] } "update_by" => [INFO] [stdout] { [INFO] [stdout] return rbson :: to_bson(& self.update_by).unwrap_or_default() [INFO] [stdout] ; [INFO] [stdout] } "update_time" => [INFO] [stdout] { [INFO] [stdout] return rbson :: [INFO] [stdout] to_bson(& self.update_time).unwrap_or_default() ; [INFO] [stdout] } "remark" => [INFO] [stdout] { return rbson :: to_bson(& self.remark).unwrap_or_default() ; } [INFO] [stdout] "id" => [INFO] [stdout] { return rbson :: to_bson(& self.id).unwrap_or_default() ; } [INFO] [stdout] "version" => [INFO] [stdout] { return rbson :: to_bson(& self.version).unwrap_or_default() ; } [INFO] [stdout] "del_flag" => [INFO] [stdout] { return rbson :: to_bson(& self.del_flag).unwrap_or_default() ; } [INFO] [stdout] "update_ip" => [INFO] [stdout] { [INFO] [stdout] return rbson :: to_bson(& self.update_ip).unwrap_or_default() [INFO] [stdout] ; [INFO] [stdout] } "create_dept" => [INFO] [stdout] { [INFO] [stdout] return rbson :: [INFO] [stdout] to_bson(& self.create_dept).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] "config_name,config_key,config_value,config_type,create_by,create_time,update_by,update_time,remark,id,version,del_flag,update_ip,create_dept".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, Serialize, Deserialize, [INFO] [stdout] Validate)] #[serde(rename_all(serialize = "camelCase"))] pub struct SysNotice [INFO] [stdout] { [INFO] [stdout] /// id [INFO] [stdout] #[validate(length(max = 64))] pub id : Option < String >, /// 公告标题 [INFO] [stdout] #[validate(length(max = 50))] pub notice_title : Option < String >, [INFO] [stdout] /// 公告类型(1通知 2公告) [INFO] [stdout] #[validate(length(max = 1))] pub notice_type : Option < String >, [INFO] [stdout] /// 公告内容 [INFO] [stdout] pub notice_content : Option < Vec < u8 >>, /// 公告内容HTML [INFO] [stdout] pub notice_content_html : Option < Vec < u8 >>, [INFO] [stdout] /// 公告状态(0正常 1关闭) [INFO] [stdout] #[validate(length(max = 1))] pub status : Option < String >, /// 创建者 [INFO] [stdout] #[validate(length(max = 64))] pub create_by : Option < String >, [INFO] [stdout] /// 创建时间 [INFO] [stdout] pub create_time : Option < rbatis :: DateTimeNative >, /// 更新者 [INFO] [stdout] #[validate(length(max = 64))] pub update_by : Option < String >, [INFO] [stdout] /// 更新时间 [INFO] [stdout] pub update_time : Option < rbatis :: DateTimeNative >, /// 备注 [INFO] [stdout] #[validate(length(max = 255))] pub remark : Option < String >, /// 版本 [INFO] [stdout] pub version : Option < i32 >, [INFO] [stdout] /// 删除标志(0代表存在 1代表删除) [INFO] [stdout] #[validate(length(max = 1))] pub del_flag : Option < String >, [INFO] [stdout] /// 更新IP [INFO] [stdout] #[validate(length(max = 128))] pub update_ip : Option < String >, [INFO] [stdout] /// 创建部门 [INFO] [stdout] #[validate(length(max = 64))] pub create_dept : Option < String >, [INFO] [stdout] } impl rbatis :: crud :: CRUDTable for SysNotice [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] "notice_title" => [INFO] [stdout] { [INFO] [stdout] return rbson :: [INFO] [stdout] to_bson(& self.notice_title).unwrap_or_default() ; [INFO] [stdout] } "notice_type" => [INFO] [stdout] { [INFO] [stdout] return rbson :: [INFO] [stdout] to_bson(& self.notice_type).unwrap_or_default() ; [INFO] [stdout] } "notice_content" => [INFO] [stdout] { [INFO] [stdout] return rbson :: [INFO] [stdout] to_bson(& self.notice_content).unwrap_or_default() ; [INFO] [stdout] } "notice_content_html" => [INFO] [stdout] { [INFO] [stdout] return rbson :: [INFO] [stdout] to_bson(& self.notice_content_html).unwrap_or_default() ; [INFO] [stdout] } "status" => [INFO] [stdout] { return rbson :: to_bson(& self.status).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_time" => [INFO] [stdout] { [INFO] [stdout] return rbson :: [INFO] [stdout] to_bson(& self.create_time).unwrap_or_default() ; [INFO] [stdout] } "update_by" => [INFO] [stdout] { [INFO] [stdout] return rbson :: to_bson(& self.update_by).unwrap_or_default() [INFO] [stdout] ; [INFO] [stdout] } "update_time" => [INFO] [stdout] { [INFO] [stdout] return rbson :: [INFO] [stdout] to_bson(& self.update_time).unwrap_or_default() ; [INFO] [stdout] } "remark" => [INFO] [stdout] { return rbson :: to_bson(& self.remark).unwrap_or_default() ; } [INFO] [stdout] "version" => [INFO] [stdout] { return rbson :: to_bson(& self.version).unwrap_or_default() ; } [INFO] [stdout] "del_flag" => [INFO] [stdout] { return rbson :: to_bson(& self.del_flag).unwrap_or_default() ; } [INFO] [stdout] "update_ip" => [INFO] [stdout] { [INFO] [stdout] return rbson :: to_bson(& self.update_ip).unwrap_or_default() [INFO] [stdout] ; [INFO] [stdout] } "create_dept" => [INFO] [stdout] { [INFO] [stdout] return rbson :: [INFO] [stdout] to_bson(& self.create_dept).unwrap_or_default() ; [INFO] [stdout] } _ => { rbson :: Bson :: Null } [INFO] [stdout] } [INFO] [stdout] } fn table_name() -> String { "sys_notice".to_string() } fn [INFO] [stdout] table_columns() -> String [INFO] [stdout] { [INFO] [stdout] "id,notice_title,notice_type,notice_content,notice_content_html,status,create_by,create_time,update_by,update_time,remark,version,del_flag,update_ip,create_dept".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, Serialize, Hash, Deserialize, [INFO] [stdout] Validate)] #[serde(rename_all(serialize = "camelCase"))] pub struct SysMenu [INFO] [stdout] { [INFO] [stdout] /// ID [INFO] [stdout] #[validate(length(max = 64))] pub id : Option < String >, /// 菜单编码 [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] #[validate(length(max = 64))] pub parent_id : Option < String >, [INFO] [stdout] /// 显示顺序 [INFO] [stdout] pub sort : Option < i32 >, /// 路由地址 [INFO] [stdout] #[validate(length(max = 200))] pub path : Option < String >, [INFO] [stdout] /// 组件路径 [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 >, [INFO] [stdout] /// 菜单类型(M目录 C菜单 F按钮) [INFO] [stdout] #[validate(length(max = 1))] pub menu_type : Option < String >, [INFO] [stdout] /// 菜单状态(0显示 1隐藏) [INFO] [stdout] #[validate(length(max = 1))] pub visible : Option < String >, [INFO] [stdout] /// 菜单状态(0正常 1停用) [INFO] [stdout] #[validate(length(max = 1))] pub status : Option < String >, [INFO] [stdout] /// 权限标识 [INFO] [stdout] #[validate(length(max = 100))] pub perms : Option < String >, [INFO] [stdout] /// 菜单图标 [INFO] [stdout] #[validate(length(max = 100))] pub icon : Option < String >, /// 创建者 [INFO] [stdout] #[validate(length(max = 64))] pub create_by : Option < String >, [INFO] [stdout] /// 创建时间 [INFO] [stdout] pub create_time : Option < rbatis :: DateTimeNative >, /// 更新者 [INFO] [stdout] #[validate(length(max = 64))] pub update_by : Option < String >, [INFO] [stdout] /// 更新时间 [INFO] [stdout] pub update_time : Option < rbatis :: DateTimeNative >, /// 备注 [INFO] [stdout] #[validate(length(max = 500))] pub remark : Option < String >, [INFO] [stdout] /// 父id集合 [INFO] [stdout] #[validate(length(max = 500))] pub parent_ids : Option < String >, [INFO] [stdout] /// 排序 [INFO] [stdout] pub tree_sort : Option < i32 >, /// 排序集合 [INFO] [stdout] #[validate(length(max = 500))] pub tree_sorts : Option < String >, [INFO] [stdout] /// 层级 [INFO] [stdout] pub tree_level : Option < i32 >, /// 是否子节点(0是 1否) [INFO] [stdout] #[validate(length(max = 1))] pub tree_leaf : Option < String >, [INFO] [stdout] /// 创建部门 [INFO] [stdout] #[validate(length(max = 64))] pub create_dept : Option < String >, [INFO] [stdout] /// 更新IP [INFO] [stdout] #[validate(length(max = 128))] pub update_ip : Option < String >, [INFO] [stdout] /// 版本 [INFO] [stdout] pub version : Option < i32 >, [INFO] [stdout] /// 删除标志(0代表存在 1代表删除) [INFO] [stdout] #[validate(length(max = 1))] pub del_flag : Option < String >, [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] } "parent_id" => [INFO] [stdout] { [INFO] [stdout] return rbson :: to_bson(& self.parent_id).unwrap_or_default() [INFO] [stdout] ; [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] "create_by" => [INFO] [stdout] { [INFO] [stdout] return rbson :: to_bson(& self.create_by).unwrap_or_default() [INFO] [stdout] ; [INFO] [stdout] } "create_time" => [INFO] [stdout] { [INFO] [stdout] return rbson :: [INFO] [stdout] to_bson(& self.create_time).unwrap_or_default() ; [INFO] [stdout] } "update_by" => [INFO] [stdout] { [INFO] [stdout] return rbson :: to_bson(& self.update_by).unwrap_or_default() [INFO] [stdout] ; [INFO] [stdout] } "update_time" => [INFO] [stdout] { [INFO] [stdout] return rbson :: [INFO] [stdout] to_bson(& self.update_time).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_dept" => [INFO] [stdout] { [INFO] [stdout] return rbson :: [INFO] [stdout] to_bson(& self.create_dept).unwrap_or_default() ; [INFO] [stdout] } "update_ip" => [INFO] [stdout] { [INFO] [stdout] return rbson :: to_bson(& self.update_ip).unwrap_or_default() [INFO] [stdout] ; [INFO] [stdout] } "version" => [INFO] [stdout] { return rbson :: to_bson(& self.version).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_menu".to_string() } fn table_columns() [INFO] [stdout] -> String [INFO] [stdout] { [INFO] [stdout] "id,menu_code,menu_name,parent_id,sort,path,component,is_frame,is_cache,menu_type,visible,status,perms,icon,create_by,create_time,update_by,update_time,remark,parent_ids,tree_sort,tree_sorts,tree_level,tree_leaf,create_dept,update_ip,version,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, Serialize, Deserialize, [INFO] [stdout] Validate)] #[serde(rename_all(serialize = "camelCase"))] pub struct [INFO] [stdout] GenConfigTemplate [INFO] [stdout] { [INFO] [stdout] /// 主键ID [INFO] [stdout] #[validate(length(max = 50))] pub id : Option < String >, /// 模板名称 [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] #[validate(length(max = 1))] pub status : Option < String >, /// 创建者 [INFO] [stdout] #[validate(length(max = 64))] pub create_by : Option < String >, [INFO] [stdout] /// 创建部门 [INFO] [stdout] #[validate(length(max = 64))] pub create_dept : Option < String >, [INFO] [stdout] /// 创建时间 [INFO] [stdout] pub create_time : Option < rbatis :: DateTimeNative >, /// 更新者 [INFO] [stdout] #[validate(length(max = 64))] pub update_by : Option < String >, [INFO] [stdout] /// 更新时间 [INFO] [stdout] pub update_time : Option < rbatis :: DateTimeNative >, /// 更新IP [INFO] [stdout] #[validate(length(max = 128))] pub update_ip : Option < String >, [INFO] [stdout] /// 备注 [INFO] [stdout] #[validate(length(max = 500))] pub remark : Option < String >, /// 版本 [INFO] [stdout] pub version : Option < i32 >, [INFO] [stdout] /// 删除标志(0代表存在 1代表删除) [INFO] [stdout] #[validate(length(max = 1))] pub del_flag : Option < String >, [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] "create_by" => [INFO] [stdout] { [INFO] [stdout] return rbson :: to_bson(& self.create_by).unwrap_or_default() [INFO] [stdout] ; [INFO] [stdout] } "create_dept" => [INFO] [stdout] { [INFO] [stdout] return rbson :: [INFO] [stdout] to_bson(& self.create_dept).unwrap_or_default() ; [INFO] [stdout] } "create_time" => [INFO] [stdout] { [INFO] [stdout] return rbson :: [INFO] [stdout] to_bson(& self.create_time).unwrap_or_default() ; [INFO] [stdout] } "update_by" => [INFO] [stdout] { [INFO] [stdout] return rbson :: to_bson(& self.update_by).unwrap_or_default() [INFO] [stdout] ; [INFO] [stdout] } "update_time" => [INFO] [stdout] { [INFO] [stdout] return rbson :: [INFO] [stdout] to_bson(& self.update_time).unwrap_or_default() ; [INFO] [stdout] } "update_ip" => [INFO] [stdout] { [INFO] [stdout] return rbson :: to_bson(& self.update_ip).unwrap_or_default() [INFO] [stdout] ; [INFO] [stdout] } "remark" => [INFO] [stdout] { return rbson :: to_bson(& self.remark).unwrap_or_default() ; } [INFO] [stdout] "version" => [INFO] [stdout] { return rbson :: to_bson(& self.version).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 { "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,create_by,create_dept,create_time,update_by,update_time,update_ip,remark,version,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, Serialize, Deserialize, [INFO] [stdout] Validate)] #[serde(rename_all(serialize = "camelCase"))] pub struct GenTable [INFO] [stdout] { [INFO] [stdout] /// 编号 [INFO] [stdout] pub table_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] #[validate(length(max = 1))] pub gen_type : Option < String >, /// [INFO] [stdout] #[validate(length(max = 4000))] pub options : Option < String >, [INFO] [stdout] /// 创建者 [INFO] [stdout] #[validate(length(max = 64))] pub create_by : Option < String >, [INFO] [stdout] /// 创建时间 [INFO] [stdout] pub create_time : Option < rbatis :: DateTimeUtc >, /// 更新者 [INFO] [stdout] #[validate(length(max = 64))] pub update_by : Option < String >, [INFO] [stdout] /// 更新时间 [INFO] [stdout] pub update_time : Option < rbatis :: DateTimeNative >, /// 备注 [INFO] [stdout] #[validate(length(max = 500))] pub remark : Option < String >, [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] "table_id" => [INFO] [stdout] { return rbson :: to_bson(& self.table_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] "create_by" => [INFO] [stdout] { [INFO] [stdout] return rbson :: to_bson(& self.create_by).unwrap_or_default() [INFO] [stdout] ; [INFO] [stdout] } "create_time" => [INFO] [stdout] { [INFO] [stdout] return rbson :: [INFO] [stdout] to_bson(& self.create_time).unwrap_or_default() ; [INFO] [stdout] } "update_by" => [INFO] [stdout] { [INFO] [stdout] return rbson :: to_bson(& self.update_by).unwrap_or_default() [INFO] [stdout] ; [INFO] [stdout] } "update_time" => [INFO] [stdout] { [INFO] [stdout] return rbson :: [INFO] [stdout] to_bson(& self.update_time).unwrap_or_default() ; [INFO] [stdout] } "remark" => [INFO] [stdout] { return rbson :: to_bson(& self.remark).unwrap_or_default() ; } _ [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] "table_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,create_by,create_time,update_by,update_time,remark".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] Compiling async-stream v0.3.3 [INFO] [stdout] ............gen impl CRUDTable: [INFO] [stdout] /// 代码生成业务表字段 [INFO] [stdout] #[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize, [INFO] [stdout] Validate)] #[serde(rename_all(serialize = "camelCase"))] pub struct [INFO] [stdout] GenTableColumn [INFO] [stdout] { [INFO] [stdout] /// 编号 [INFO] [stdout] pub column_id : Option < i64 >, /// 归属表编号 [INFO] [stdout] #[validate(length(max = 64))] pub table_id : Option < String >, [INFO] [stdout] /// 列名称 [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_new_row : Option < String >, [INFO] [stdout] /// 列数 [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] /// 排序 [INFO] [stdout] pub sort : Option < i32 >, /// 创建者 [INFO] [stdout] #[validate(length(max = 64))] pub create_by : Option < String >, [INFO] [stdout] /// 创建时间 [INFO] [stdout] pub create_time : Option < rbatis :: DateTimeNative >, /// 更新者 [INFO] [stdout] #[validate(length(max = 64))] pub update_by : Option < String >, [INFO] [stdout] /// 更新时间 [INFO] [stdout] pub update_time : 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] "column_id" => [INFO] [stdout] { [INFO] [stdout] return rbson :: to_bson(& self.column_id).unwrap_or_default() [INFO] [stdout] ; [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_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_time" => [INFO] [stdout] { [INFO] [stdout] return rbson :: [INFO] [stdout] to_bson(& self.create_time).unwrap_or_default() ; [INFO] [stdout] } "update_by" => [INFO] [stdout] { [INFO] [stdout] return rbson :: to_bson(& self.update_by).unwrap_or_default() [INFO] [stdout] ; [INFO] [stdout] } "update_time" => [INFO] [stdout] { [INFO] [stdout] return rbson :: [INFO] [stdout] to_bson(& self.update_time).unwrap_or_default() ; [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] "column_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_new_row,col_span,align_type,query_type,html_type,dict_type,col_check,sort,create_by,create_time,update_by,update_time".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] Compiling tokio-test v0.4.2 [INFO] [stderr] Compiling generator v0.2.0 (/opt/rustwide/workdir/generator) [INFO] [stderr] Compiling crab-lib v0.1.0 (/opt/rustwide/workdir/crab-lib) [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: 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 ()) AND FIND_IN_SET(TABLE_NAME, #{table_names}) ORDER BY CREATE_TIME; [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, ?)") ; sql.push_str(" ") ; [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: 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 ()) AND FIND_IN_SET(TABLE_NAME, #{table_names}) ORDER BY ORDINAL_POSITION; [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, ?)") ; sql.push_str(" ") ; [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] /// 所从属的表名,如索引所在的表名 [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: SELECT type, name, tbl_name, rootpage, sql FROM sqlite_master WHERE type = 'table' AND ( 1 = 2 OR name = '#{item}' ) ORDER by rootpage; [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] "collection": "table_names", [INFO] [stdout] "item": "item", [INFO] [stdout] "index": "", [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: pragma table_info('#{table_names}'); [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] warning: unused `#[macro_use]` import [INFO] [stdout] --> crab-lib/src/lib.rs:2:1 [INFO] [stdout] | [INFO] [stdout] 2 | #[macro_use] [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `#[macro_use]` import [INFO] [stdout] --> crab-lib/src/lib.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 | #[macro_use] [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `#[macro_use]` import [INFO] [stdout] --> crab-lib/src/lib.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | #[macro_use] [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `rbatis::crud::CRUD` [INFO] [stdout] --> generator/src/sqlite.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use rbatis::crud::CRUD; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 3 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 1 warning emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished test [unoptimized + debuginfo] target(s) in 15.04s [INFO] [stderr] Executable unittests src/lib.rs (/opt/rustwide/target/debug/deps/crab_cache-04450de5d4f630fc) [INFO] [stderr] Executable unittests src/lib.rs (/opt/rustwide/target/debug/deps/crab_common-8c77b9fca17c909a) [INFO] [stderr] Executable unittests src/lib.rs (/opt/rustwide/target/debug/deps/crab_config-e382344578223199) [INFO] [stderr] Executable unittests src/lib.rs (/opt/rustwide/target/debug/deps/crab_excel-7118e5ddf52838dd) [INFO] [stderr] Executable tests/excel_writer.rs (/opt/rustwide/target/debug/deps/excel_writer-725db9ef730e225a) [INFO] [stderr] Executable tests/test.rs (/opt/rustwide/target/debug/deps/test-523472a4a9f7e668) [INFO] [stderr] Executable unittests src/lib.rs (/opt/rustwide/target/debug/deps/crab_excel_derive-df76b6f5770afd1c) [INFO] [stderr] Executable unittests src/lib.rs (/opt/rustwide/target/debug/deps/crab_lib-07ce8c55cc03d76b) [INFO] [stderr] Executable unittests src/lib.rs (/opt/rustwide/target/debug/deps/crab_model-1d54644c792396e0) [INFO] [stderr] Executable unittests src/lib.rs (/opt/rustwide/target/debug/deps/crab_service-ec7bfd0cfe035555) [INFO] [stderr] Executable unittests src/lib.rs (/opt/rustwide/target/debug/deps/crab_util-3c4bb36592750381) [INFO] [stderr] Executable unittests src/lib.rs (/opt/rustwide/target/debug/deps/generator-a43d479551a2eb20) [INFO] [stderr] Executable unittests src/main.rs (/opt/rustwide/target/debug/deps/generator-d74ef7faaa3d7354) [INFO] running `Command { std: "docker" "inspect" "d4fc7eab7c7e694f90ad2c69438c971286d7374743cb4f7dd105ee6eb8417d2a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "d4fc7eab7c7e694f90ad2c69438c971286d7374743cb4f7dd105ee6eb8417d2a", kill_on_drop: false }` [INFO] [stdout] d4fc7eab7c7e694f90ad2c69438c971286d7374743cb4f7dd105ee6eb8417d2a [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1/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" "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:b0c94ce3c1162fcb8e57cac5b65ec2f72eabb1eebea4fcc35e269e823f681646" "/opt/rustwide/cargo-home/bin/cargo" "+1b74e096b9bfb06f84a3007193dcd2f059cbdf6a" "test" "--frozen", kill_on_drop: false }` [INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap. [INFO] [stdout] bfebf11238b4577ddfb24085878a70d8eda82b58ae98203af255c4698fd35e94 [INFO] running `Command { std: "docker" "start" "-a" "bfebf11238b4577ddfb24085878a70d8eda82b58ae98203af255c4698fd35e94", kill_on_drop: false }` [INFO] [stderr] warning: unused `#[macro_use]` import [INFO] [stderr] --> crab-lib/src/lib.rs:2:1 [INFO] [stderr] | [INFO] [stderr] 2 | #[macro_use] [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused `#[macro_use]` import [INFO] [stderr] --> crab-lib/src/lib.rs:4:1 [INFO] [stderr] | [INFO] [stderr] 4 | #[macro_use] [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused `#[macro_use]` import [INFO] [stderr] --> crab-lib/src/lib.rs:6:1 [INFO] [stderr] | [INFO] [stderr] 6 | #[macro_use] [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `crab-lib` (lib) generated 3 warnings [INFO] [stderr] warning: `crab-lib` (lib test) generated 3 warnings (3 duplicates) [INFO] [stderr] warning: unused import: `super::*` [INFO] [stderr] --> crab-config/src/lib.rs:64:9 [INFO] [stderr] | [INFO] [stderr] 64 | use super::*; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` on by default [INFO] [stderr] help: consider adding a `#[cfg(test)]` to the containing module [INFO] [stderr] --> crab-config/src/lib.rs:63:1 [INFO] [stderr] | [INFO] [stderr] 63 | mod test { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `crab-config` (lib) generated 1 warning [INFO] [stderr] warning: unused import: `rbatis::crud::CRUD` [INFO] [stderr] --> generator/src/sqlite.rs:2:5 [INFO] [stderr] | [INFO] [stderr] 2 | use rbatis::crud::CRUD; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` on by default [INFO] [stderr] [INFO] [stderr] warning: `generator` (lib) generated 1 warning [INFO] [stderr] warning: `generator` (lib test) generated 1 warning (1 duplicate) [INFO] [stderr] warning: field is never read: `id` [INFO] [stderr] --> crab-excel/tests/excel_writer.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | id: u32, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` on by default [INFO] [stderr] note: `TestExcel` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stderr] --> crab-excel/tests/excel_writer.rs:4:10 [INFO] [stderr] | [INFO] [stderr] 4 | #[derive(Debug, Default, ExcelWriter)] [INFO] [stderr] | ^^^^^ [INFO] [stderr] = note: this warning originates in the derive macro `Debug` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: field is never read: `roles` [INFO] [stderr] --> crab-excel/tests/excel_writer.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 11 | roles: Vec, [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: `TestExcel` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stderr] --> crab-excel/tests/excel_writer.rs:4:10 [INFO] [stderr] | [INFO] [stderr] 4 | #[derive(Debug, Default, ExcelWriter)] [INFO] [stderr] | ^^^^^ [INFO] [stderr] = note: this warning originates in the derive macro `Debug` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: field is never read: `del` [INFO] [stderr] --> crab-excel/tests/excel_writer.rs:13:5 [INFO] [stderr] | [INFO] [stderr] 13 | del: u8, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: `TestExcel` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stderr] --> crab-excel/tests/excel_writer.rs:4:10 [INFO] [stderr] | [INFO] [stderr] 4 | #[derive(Debug, Default, ExcelWriter)] [INFO] [stderr] | ^^^^^ [INFO] [stderr] = note: this warning originates in the derive macro `Debug` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: field is never read: `date` [INFO] [stderr] --> crab-excel/tests/excel_writer.rs:15:5 [INFO] [stderr] | [INFO] [stderr] 15 | date: u128, [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: `TestExcel` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stderr] --> crab-excel/tests/excel_writer.rs:4:10 [INFO] [stderr] | [INFO] [stderr] 4 | #[derive(Debug, Default, ExcelWriter)] [INFO] [stderr] | ^^^^^ [INFO] [stderr] = note: this warning originates in the derive macro `Debug` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused `Result` that must be used [INFO] [stderr] --> crab-excel/tests/excel_writer.rs:4:26 [INFO] [stderr] | [INFO] [stderr] 4 | #[derive(Debug, Default, ExcelWriter)] [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_must_use)]` on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] = note: this warning originates in the derive macro `ExcelWriter` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: `crab-excel` (test "excel_writer") generated 5 warnings [INFO] [stderr] Finished test [unoptimized + debuginfo] target(s) in 0.34s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/crab_cache-04450de5d4f630fc) [INFO] [stdout] [INFO] [stdout] running 1 test [INFO] [stdout] test redis_cache::test::test_redis ... FAILED [INFO] [stdout] [INFO] [stdout] failures: [INFO] [stdout] [INFO] [stdout] ---- redis_cache::test::test_redis stdout ---- [INFO] [stdout] thread 'redis_cache::test::test_redis' panicked at '获取配置文件错误: Error { inner: ErrorInner { kind: Custom, line: Some(12), col: 0, at: Some(207), message: "missing field `database_url`", key: [] } }', crab-config/src/lib.rs:55:39 [INFO] [stdout] stack backtrace: [INFO] [stdout] 0: 0x563b15095f4d - std::backtrace_rs::backtrace::libunwind::trace::hf368f6ec047d835e [INFO] [stdout] at /rustc/1b74e096b9bfb06f84a3007193dcd2f059cbdf6a/library/std/src/../../backtrace/src/backtrace/libunwind.rs:93:5 [INFO] [stdout] 1: 0x563b15095f4d - std::backtrace_rs::backtrace::trace_unsynchronized::h5deaa62eab82df22 [INFO] [stdout] at /rustc/1b74e096b9bfb06f84a3007193dcd2f059cbdf6a/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5 [INFO] [stdout] 2: 0x563b15095f4d - std::sys_common::backtrace::_print_fmt::h5a1c3a24a936a045 [INFO] [stdout] at /rustc/1b74e096b9bfb06f84a3007193dcd2f059cbdf6a/library/std/src/sys_common/backtrace.rs:66:5 [INFO] [stdout] 3: 0x563b15095f4d - ::fmt::h0219f75f359b565d [INFO] [stdout] at /rustc/1b74e096b9bfb06f84a3007193dcd2f059cbdf6a/library/std/src/sys_common/backtrace.rs:45:22 [INFO] [stdout] 4: 0x563b150bad7c - core::fmt::write::hf0ed2ae6b5ba2d7d [INFO] [stdout] at /rustc/1b74e096b9bfb06f84a3007193dcd2f059cbdf6a/library/core/src/fmt/mod.rs:1194:17 [INFO] [stdout] 5: 0x563b15090721 - std::io::Write::write_fmt::h38d43b38044a5699 [INFO] [stdout] at /rustc/1b74e096b9bfb06f84a3007193dcd2f059cbdf6a/library/std/src/io/mod.rs:1655:15 [INFO] [stdout] 6: 0x563b15097a25 - std::sys_common::backtrace::_print::h733b600962ba33ce [INFO] [stdout] at /rustc/1b74e096b9bfb06f84a3007193dcd2f059cbdf6a/library/std/src/sys_common/backtrace.rs:48:5 [INFO] [stdout] 7: 0x563b15097a25 - std::sys_common::backtrace::print::h5dc0fa0616f7d4bf [INFO] [stdout] at /rustc/1b74e096b9bfb06f84a3007193dcd2f059cbdf6a/library/std/src/sys_common/backtrace.rs:35:9 [INFO] [stdout] 8: 0x563b15097a25 - std::panicking::default_hook::{{closure}}::h3151cab60fd16f06 [INFO] [stdout] at /rustc/1b74e096b9bfb06f84a3007193dcd2f059cbdf6a/library/std/src/panicking.rs:295:22 [INFO] [stdout] 9: 0x563b150976d0 - std::panicking::default_hook::ha44b338b782f641e [INFO] [stdout] at /rustc/1b74e096b9bfb06f84a3007193dcd2f059cbdf6a/library/std/src/panicking.rs:311:9 [INFO] [stdout] 10: 0x563b15098108 - std::panicking::rust_panic_with_hook::hddbb61d11ae83bc7 [INFO] [stdout] at /rustc/1b74e096b9bfb06f84a3007193dcd2f059cbdf6a/library/std/src/panicking.rs:698:17 [INFO] [stdout] 11: 0x563b15097fb7 - std::panicking::begin_panic_handler::{{closure}}::ha90ba42a51d96fb7 [INFO] [stdout] at /rustc/1b74e096b9bfb06f84a3007193dcd2f059cbdf6a/library/std/src/panicking.rs:588:13 [INFO] [stdout] 12: 0x563b15096404 - std::sys_common::backtrace::__rust_end_short_backtrace::hb2f712e9f2c19288 [INFO] [stdout] at /rustc/1b74e096b9bfb06f84a3007193dcd2f059cbdf6a/library/std/src/sys_common/backtrace.rs:138:18 [INFO] [stdout] 13: 0x563b15097ce9 - rust_begin_unwind [INFO] [stdout] at /rustc/1b74e096b9bfb06f84a3007193dcd2f059cbdf6a/library/std/src/panicking.rs:584:5 [INFO] [stdout] 14: 0x563b150b9773 - core::panicking::panic_fmt::ha7e9b4e73b08c9d5 [INFO] [stdout] at /rustc/1b74e096b9bfb06f84a3007193dcd2f059cbdf6a/library/core/src/panicking.rs:142:14 [INFO] [stdout] 15: 0x563b150b9a23 - core::result::unwrap_failed::hddfa661a0339e8e8 [INFO] [stdout] at /rustc/1b74e096b9bfb06f84a3007193dcd2f059cbdf6a/library/core/src/result.rs:1785:5 [INFO] [stdout] 16: 0x563b14f5eb9c - core::result::Result::expect::hc098597484c82dcd [INFO] [stdout] at /rustc/1b74e096b9bfb06f84a3007193dcd2f059cbdf6a/library/core/src/result.rs:1035:23 [INFO] [stdout] 17: 0x563b14f1e1a6 - crab_config::App::new::h06483822364c4f19 [INFO] [stdout] at /opt/rustwide/workdir/crab-config/src/lib.rs:55:9 [INFO] [stdout] 18: 0x563b14f51a41 - ::deref::__static_ref_initialize::hf6536ff3774a3166 [INFO] [stdout] at /opt/rustwide/workdir/crab-config/src/lib.rs:60:31 [INFO] [stdout] 19: 0x563b14f51a41 - core::ops::function::FnOnce::call_once::hb3407ef4dd46a7f7 [INFO] [stdout] at /rustc/1b74e096b9bfb06f84a3007193dcd2f059cbdf6a/library/core/src/ops/function.rs:248:5 [INFO] [stdout] 20: 0x563b14f4d914 - spin::once::Once::call_once::hef183712751f74f3 [INFO] [stdout] at /opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/spin-0.5.2/src/once.rs:110:50 [INFO] [stdout] 21: 0x563b14f2b292 - lazy_static::lazy::Lazy::get::he5abbb556b6f1f04 [INFO] [stdout] at /opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/lazy_static-1.4.0/src/core_lazy.rs:21:9 [INFO] [stdout] 22: 0x563b14f2b292 - ::deref::__stability::hc5913ca019c7f973 [INFO] [stdout] at /opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/lazy_static-1.4.0/src/lib.rs:142:21 [INFO] [stdout] 23: 0x563b14f2b292 - ::deref::hfa5c0671bae7fe78 [INFO] [stdout] at /opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/lazy_static-1.4.0/src/lib.rs:144:17 [INFO] [stdout] 24: 0x563b14ee185e - crab_cache::client::h0e07f277340d26e6 [INFO] [stdout] at /opt/rustwide/workdir/crab-cache/src/lib.rs:34:31 [INFO] [stdout] 25: 0x563b14ee16a0 - ::deref::__static_ref_initialize::h58e53b4bc5a09bc2 [INFO] [stdout] at /opt/rustwide/workdir/crab-cache/src/lib.rs:29:32 [INFO] [stdout] 26: 0x563b14ee16a0 - core::ops::function::FnOnce::call_once::h57cf178ceb75d896 [INFO] [stdout] at /rustc/1b74e096b9bfb06f84a3007193dcd2f059cbdf6a/library/core/src/ops/function.rs:248:5 [INFO] [stdout] 27: 0x563b14ee09b0 - spin::once::Once::call_once::h338fad92f0a4349a [INFO] [stdout] at /opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/spin-0.5.2/src/once.rs:110:50 [INFO] [stdout] 28: 0x563b14ee1941 - lazy_static::lazy::Lazy::get::hea906883f70028e4 [INFO] [stdout] at /opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/lazy_static-1.4.0/src/core_lazy.rs:21:9 [INFO] [stdout] 29: 0x563b14ee1941 - ::deref::__stability::hb4f20d839b290ba8 [INFO] [stdout] at /opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/lazy_static-1.4.0/src/lib.rs:142:21 [INFO] [stdout] 30: 0x563b14ee1941 - ::deref::h18349c6745317a5a [INFO] [stdout] at /opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/lazy_static-1.4.0/src/lib.rs:144:17 [INFO] [stdout] 31: 0x563b14ee18d9 - crab_cache::connection::h4900a0e6c0d4a427 [INFO] [stdout] at /opt/rustwide/workdir/crab-cache/src/lib.rs:40:16 [INFO] [stdout] 32: 0x563b14ee1135 - crab_cache::redis_cache::get::h8514e9da3afcb6ef [INFO] [stdout] at /opt/rustwide/workdir/crab-cache/src/redis_cache.rs:21:21 [INFO] [stdout] 33: 0x563b14ee0cce - crab_cache::redis_cache::test::test_redis::h34f51fef5d7e57f1 [INFO] [stdout] at /opt/rustwide/workdir/crab-cache/src/redis_cache.rs:69:26 [INFO] [stdout] 34: 0x563b14ee0c5a - crab_cache::redis_cache::test::test_redis::{{closure}}::h1bf958e50a679588 [INFO] [stdout] at /opt/rustwide/workdir/crab-cache/src/redis_cache.rs:65:5 [INFO] [stdout] 35: 0x563b14ee16be - core::ops::function::FnOnce::call_once::hf541a08110efaeac [INFO] [stdout] at /rustc/1b74e096b9bfb06f84a3007193dcd2f059cbdf6a/library/core/src/ops/function.rs:248:5 [INFO] [stdout] 36: 0x563b14f186c3 - core::ops::function::FnOnce::call_once::h0dfe20f12b77bab0 [INFO] [stdout] at /rustc/1b74e096b9bfb06f84a3007193dcd2f059cbdf6a/library/core/src/ops/function.rs:248:5 [INFO] [stdout] 37: 0x563b14f186c3 - test::__rust_begin_short_backtrace::h621e75342c56b813 [INFO] [stdout] at /rustc/1b74e096b9bfb06f84a3007193dcd2f059cbdf6a/library/test/src/lib.rs:573:5 [INFO] [stdout] 38: 0x563b14f1746a - as core::ops::function::FnOnce>::call_once::ha960722220d3e4e3 [INFO] [stdout] at /rustc/1b74e096b9bfb06f84a3007193dcd2f059cbdf6a/library/alloc/src/boxed.rs:1866:9 [INFO] [stdout] 39: 0x563b14f1746a - as core::ops::function::FnOnce<()>>::call_once::h8d4f52e2b0282cfb [INFO] [stdout] at /rustc/1b74e096b9bfb06f84a3007193dcd2f059cbdf6a/library/core/src/panic/unwind_safe.rs:271:9 [INFO] [stdout] 40: 0x563b14f1746a - std::panicking::try::do_call::h482ae3b09291596d [INFO] [stdout] at /rustc/1b74e096b9bfb06f84a3007193dcd2f059cbdf6a/library/std/src/panicking.rs:492:40 [INFO] [stdout] 41: 0x563b14f1746a - std::panicking::try::h2ddddb26c086954d [INFO] [stdout] at /rustc/1b74e096b9bfb06f84a3007193dcd2f059cbdf6a/library/std/src/panicking.rs:456:19 [INFO] [stdout] 42: 0x563b14f1746a - std::panic::catch_unwind::h743b0e27e7a9c139 [INFO] [stdout] at /rustc/1b74e096b9bfb06f84a3007193dcd2f059cbdf6a/library/std/src/panic.rs:137:14 [INFO] [stdout] 43: 0x563b14f1746a - test::run_test_in_process::ha7740d79e504cc37 [INFO] [stdout] at /rustc/1b74e096b9bfb06f84a3007193dcd2f059cbdf6a/library/test/src/lib.rs:596:18 [INFO] [stdout] 44: 0x563b14f1746a - test::run_test::run_test_inner::{{closure}}::h8418baf60f7a06c4 [INFO] [stdout] at /rustc/1b74e096b9bfb06f84a3007193dcd2f059cbdf6a/library/test/src/lib.rs:490:39 [INFO] [stdout] 45: 0x563b14ee1c1d - test::run_test::run_test_inner::{{closure}}::h0beb35daaa80ec66 [INFO] [stdout] at /rustc/1b74e096b9bfb06f84a3007193dcd2f059cbdf6a/library/test/src/lib.rs:517:37 [INFO] [stdout] 46: 0x563b14ee1c1d - std::sys_common::backtrace::__rust_begin_short_backtrace::hb005f1ebb9b3ac0b [INFO] [stdout] at /rustc/1b74e096b9bfb06f84a3007193dcd2f059cbdf6a/library/std/src/sys_common/backtrace.rs:122:18 [INFO] [stdout] 47: 0x563b14ee7718 - std::thread::Builder::spawn_unchecked_::{{closure}}::{{closure}}::h496c50f972d6dc0f [INFO] [stdout] at /rustc/1b74e096b9bfb06f84a3007193dcd2f059cbdf6a/library/std/src/thread/mod.rs:498:17 [INFO] [stdout] 48: 0x563b14ee7718 - as core::ops::function::FnOnce<()>>::call_once::ha5b8911111f511ea [INFO] [stdout] at /rustc/1b74e096b9bfb06f84a3007193dcd2f059cbdf6a/library/core/src/panic/unwind_safe.rs:271:9 [INFO] [stdout] 49: 0x563b14ee7718 - std::panicking::try::do_call::h084ed94d88677037 [INFO] [stdout] at /rustc/1b74e096b9bfb06f84a3007193dcd2f059cbdf6a/library/std/src/panicking.rs:492:40 [INFO] [stdout] 50: 0x563b14ee7718 - std::panicking::try::h013a823fb6061e50 [INFO] [stdout] at /rustc/1b74e096b9bfb06f84a3007193dcd2f059cbdf6a/library/std/src/panicking.rs:456:19 [INFO] [stdout] 51: 0x563b14ee7718 - std::panic::catch_unwind::h041e5fbe96cdc85b [INFO] [stdout] at /rustc/1b74e096b9bfb06f84a3007193dcd2f059cbdf6a/library/std/src/panic.rs:137:14 [INFO] [stdout] 52: 0x563b14ee7718 - std::thread::Builder::spawn_unchecked_::{{closure}}::h24aad6f3231b4f43 [INFO] [stdout] at /rustc/1b74e096b9bfb06f84a3007193dcd2f059cbdf6a/library/std/src/thread/mod.rs:497:30 [INFO] [stdout] 53: 0x563b14ee7718 - core::ops::function::FnOnce::call_once{{vtable.shim}}::h88f4642fdc208aab [INFO] [stdout] at /rustc/1b74e096b9bfb06f84a3007193dcd2f059cbdf6a/library/core/src/ops/function.rs:248:5 [INFO] [stdout] 54: 0x563b1509cb13 - as core::ops::function::FnOnce>::call_once::h21f4f903d484bbf8 [INFO] [stdout] at /rustc/1b74e096b9bfb06f84a3007193dcd2f059cbdf6a/library/alloc/src/boxed.rs:1866:9 [INFO] [stdout] 55: 0x563b1509cb13 - as core::ops::function::FnOnce>::call_once::h88143291d50223e5 [INFO] [stdout] at /rustc/1b74e096b9bfb06f84a3007193dcd2f059cbdf6a/library/alloc/src/boxed.rs:1866:9 [INFO] [stdout] 56: 0x563b1509cb13 - std::sys::unix::thread::Thread::new::thread_start::h21cad75f6abb068a [INFO] [stdout] at /rustc/1b74e096b9bfb06f84a3007193dcd2f059cbdf6a/library/std/src/sys/unix/thread.rs:108:17 [INFO] [stdout] 57: 0x7f3db9f3b609 - start_thread [INFO] [stdout] 58: 0x7f3db9d0b163 - clone [INFO] [stdout] 59: 0x0 - [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] failures: [INFO] [stdout] redis_cache::test::test_redis [INFO] [stdout] [INFO] [stdout] test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.06s [INFO] [stdout] [INFO] [stderr] error: test failed, to rerun pass '-p crab-cache --lib' [INFO] running `Command { std: "docker" "inspect" "bfebf11238b4577ddfb24085878a70d8eda82b58ae98203af255c4698fd35e94", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "bfebf11238b4577ddfb24085878a70d8eda82b58ae98203af255c4698fd35e94", kill_on_drop: false }` [INFO] [stdout] bfebf11238b4577ddfb24085878a70d8eda82b58ae98203af255c4698fd35e94