[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] eea5827fd249794795e0fae1d11da809a21fe172 [INFO] testing LittleGuest/hairy-crabs against beta-2022-04-10 for beta-1.61-1 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FLittleGuest%2Fhairy-crabs" "/workspace/builds/worker-16/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-16/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/LittleGuest/hairy-crabs on toolchain beta-2022-04-10 [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+beta-2022-04-10" "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-16/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" "+beta-2022-04-10" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-16/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-16/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" "+beta-2022-04-10" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] b2c0be5470ffd3e1b650bbfd040b1f148c95c4d1d52c9a28c6101b17f9179ebb [INFO] running `Command { std: "docker" "start" "-a" "b2c0be5470ffd3e1b650bbfd040b1f148c95c4d1d52c9a28c6101b17f9179ebb", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "b2c0be5470ffd3e1b650bbfd040b1f148c95c4d1d52c9a28c6101b17f9179ebb", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "b2c0be5470ffd3e1b650bbfd040b1f148c95c4d1d52c9a28c6101b17f9179ebb", kill_on_drop: false }` [INFO] [stdout] b2c0be5470ffd3e1b650bbfd040b1f148c95c4d1d52c9a28c6101b17f9179ebb [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-16/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-16/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=warn" "-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" "+beta-2022-04-10" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 4ed607fd00c9da91b1e0d0ad843c300f64347dde9422fc7c0418d30468c25c0d [INFO] running `Command { std: "docker" "start" "-a" "4ed607fd00c9da91b1e0d0ad843c300f64347dde9422fc7c0418d30468c25c0d", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Compiling proc-macro2 v1.0.33 [INFO] [stderr] Compiling syn v1.0.82 [INFO] [stderr] Compiling libc v0.2.108 [INFO] [stderr] Compiling serde_derive v1.0.132 [INFO] [stderr] Compiling serde v1.0.132 [INFO] [stderr] Compiling memchr v2.4.1 [INFO] [stderr] Compiling log v0.4.14 [INFO] [stderr] Compiling cc v1.0.72 [INFO] [stderr] Compiling libm v0.2.1 [INFO] [stderr] Compiling ryu v1.0.6 [INFO] [stderr] Compiling bytes v1.1.0 [INFO] [stderr] Compiling serde_json v1.0.72 [INFO] [stderr] Compiling crossbeam-utils v0.8.5 [INFO] [stderr] Compiling ppv-lite86 v0.2.15 [INFO] [stderr] Compiling futures-channel v0.3.18 [INFO] [stderr] Compiling futures-util v0.3.18 [INFO] [stderr] Compiling ucd-trie v0.1.3 [INFO] [stderr] Compiling slab v0.4.5 [INFO] [stderr] Compiling unicode-segmentation v1.8.0 [INFO] [stderr] Compiling pkg-config v0.3.22 [INFO] [stderr] Compiling crossbeam-queue v0.3.2 [INFO] [stderr] Compiling maplit v1.0.2 [INFO] [stderr] Compiling siphasher v0.3.7 [INFO] [stderr] Compiling crossbeam-epoch v0.9.5 [INFO] [stderr] Compiling autocfg v0.1.7 [INFO] [stderr] Compiling const_fn v0.4.8 [INFO] [stderr] Compiling minimal-lexical v0.2.1 [INFO] [stderr] Compiling subtle v2.4.1 [INFO] [stderr] Compiling bindgen v0.58.1 [INFO] [stderr] Compiling crc-catalog v1.1.1 [INFO] [stderr] Compiling unicode_categories v0.1.1 [INFO] [stderr] Compiling arrayvec v0.5.2 [INFO] [stderr] Compiling encoding_rs v0.8.29 [INFO] [stderr] Compiling rustc-hash v1.1.0 [INFO] [stderr] Compiling shlex v1.1.0 [INFO] [stderr] Compiling xml-rs v0.8.4 [INFO] [stderr] Compiling whoami v1.2.1 [INFO] [stderr] Compiling peeking_take_while v0.1.2 [INFO] [stderr] Compiling bit-vec v0.6.3 [INFO] [stderr] Compiling anyhow v1.0.51 [INFO] [stderr] Compiling unic-common v0.9.0 [INFO] [stderr] Compiling unic-char-range v0.9.0 [INFO] [stderr] Compiling ident_case v1.0.1 [INFO] [stderr] Compiling httpdate v1.0.2 [INFO] [stderr] Compiling linked-hash-map v0.5.4 [INFO] [stderr] Compiling if_chain v1.0.2 [INFO] [stderr] Compiling dtoa v0.4.8 [INFO] [stderr] Compiling deunicode v0.4.3 [INFO] [stderr] Compiling sha1 v0.6.0 [INFO] [stderr] Compiling humansize v1.1.1 [INFO] [stderr] Compiling lazy_static v1.4.0 [INFO] [stderr] Compiling ahash v0.7.6 [INFO] [stderr] Compiling num-traits v0.2.14 [INFO] [stderr] Compiling num-integer v0.1.44 [INFO] [stderr] Compiling instant v0.1.12 [INFO] [stderr] Compiling tokio v1.14.0 [INFO] [stderr] Compiling textwrap v0.11.0 [INFO] [stderr] Compiling tinyvec v1.5.1 [INFO] [stderr] Compiling uncased v0.9.6 [INFO] [stderr] Compiling memoffset v0.6.4 [INFO] [stderr] Compiling standback v0.2.17 [INFO] [stderr] Compiling num-iter v0.1.42 [INFO] [stderr] Compiling num-bigint v0.4.3 [INFO] [stderr] Compiling nom v5.1.2 [INFO] [stderr] Compiling num-bigint v0.3.3 [INFO] [stderr] Compiling nom v7.1.0 [INFO] [stderr] Compiling time v0.2.27 [INFO] [stderr] Compiling libloading v0.7.2 [INFO] [stderr] Compiling unicase v2.6.0 [INFO] [stderr] Compiling num-bigint v0.2.6 [INFO] [stderr] Compiling clang-sys v1.3.0 [INFO] [stderr] Compiling crc v2.1.0 [INFO] [stderr] Compiling unic-ucd-version v0.9.0 [INFO] [stderr] Compiling tracing-core v0.1.21 [INFO] [stderr] Compiling yaml-rust v0.4.5 [INFO] [stderr] Compiling slug v0.1.4 [INFO] [stderr] Compiling unic-char-property v0.9.0 [INFO] [stderr] Compiling pest v2.1.3 [INFO] [stderr] Compiling may_queue v0.1.8 [INFO] [stderr] Compiling may v0.3.19 [INFO] [stderr] Compiling block-buffer v0.9.0 [INFO] [stderr] Compiling heck v0.3.3 [INFO] [stderr] Compiling unic-ucd-segment v0.9.0 [INFO] [stderr] Compiling sha-1 v0.9.8 [INFO] [stderr] Compiling sha2 v0.9.8 [INFO] [stderr] Compiling http v0.2.5 [INFO] [stderr] Compiling num-bigint-dig v0.7.0 [INFO] [stderr] Compiling phf_shared v0.10.0 [INFO] [stderr] Compiling unicode-normalization v0.1.19 [INFO] [stderr] Compiling crossbeam-channel v0.5.1 [INFO] [stderr] Compiling phf v0.10.0 [INFO] [stderr] Compiling aho-corasick v0.7.18 [INFO] [stderr] Compiling bstr v0.2.17 [INFO] [stderr] Compiling os_str_bytes v6.0.0 [INFO] [stderr] Compiling unic-segment v0.9.0 [INFO] [stderr] Compiling ring v0.16.20 [INFO] [stderr] Compiling bzip2-sys v0.1.11+1.0.8 [INFO] [stderr] Compiling generator v0.7.0 [INFO] [stderr] Compiling quote v1.0.10 [INFO] [stderr] Compiling pest_meta v2.1.3 [INFO] [stderr] Compiling crossbeam-deque v0.8.1 [INFO] [stderr] Compiling mime_guess v2.0.3 [INFO] [stderr] Compiling crossbeam v0.8.1 [INFO] [stderr] Compiling proc-macro-error-attr v1.0.4 [INFO] [stderr] Compiling idna v0.2.3 [INFO] [stderr] Compiling stringprep v0.1.2 [INFO] [stderr] Compiling regex v1.5.4 [INFO] [stderr] Compiling atoi v0.4.0 [INFO] [stderr] Compiling quick-xml v0.19.0 [INFO] [stderr] Compiling codepage v0.1.1 [INFO] [stderr] Compiling url v2.2.2 [INFO] [stderr] Compiling getrandom v0.2.3 [INFO] [stderr] Compiling num_cpus v1.13.0 [INFO] [stderr] Compiling time v0.1.43 [INFO] [stderr] Compiling parking_lot_core v0.8.5 [INFO] [stderr] Compiling atty v0.2.14 [INFO] [stderr] Compiling signal-hook-registry v1.4.0 [INFO] [stderr] Compiling flate2 v1.0.22 [INFO] [stderr] Compiling socket2 v0.4.2 [INFO] [stderr] Compiling which v3.1.1 [INFO] [stderr] Compiling nix v0.20.0 [INFO] [stderr] Compiling clap v2.34.0 [INFO] [stderr] Compiling bzip2 v0.4.3 [INFO] [stderr] Compiling rand_core v0.6.3 [INFO] [stderr] Compiling dashmap v4.0.2 [INFO] [stderr] Compiling parking_lot v0.11.2 [INFO] [stderr] Compiling rand_chacha v0.3.1 [INFO] [stderr] Compiling hashbrown v0.11.2 [INFO] [stderr] Compiling cexpr v0.4.0 [INFO] [stderr] Compiling futures-intrusive v0.4.0 [INFO] [stderr] Compiling headers-core v0.2.0 [INFO] [stderr] Compiling http-body v0.4.4 [INFO] [stderr] Compiling pem v0.8.3 [INFO] [stderr] Compiling parse-zoneinfo v0.3.0 [INFO] [stderr] Compiling headers v0.3.5 [INFO] [stderr] Compiling rand v0.8.4 [INFO] [stderr] Compiling indexmap v1.7.0 [INFO] [stderr] Compiling hashlink v0.7.0 [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 chrono-tz v0.6.1 [INFO] [stderr] Compiling webpki v0.21.4 [INFO] [stderr] Compiling sct v0.6.1 [INFO] [stderr] Compiling webpki-roots v0.21.1 [INFO] [stderr] Compiling proc-macro-error v1.0.4 [INFO] [stderr] Compiling synstructure v0.12.6 [INFO] [stderr] Compiling pest_generator v2.1.3 [INFO] [stderr] Compiling darling_core v0.13.1 [INFO] [stderr] Compiling validator_types v0.14.0 [INFO] [stderr] Compiling thiserror-impl v1.0.30 [INFO] [stderr] Compiling tokio-macros v1.6.0 [INFO] [stderr] Compiling futures-macro v0.3.18 [INFO] [stderr] Compiling structopt-derive v0.4.18 [INFO] [stderr] Compiling pest_derive v2.1.0 [INFO] [stderr] Compiling zeroize_derive v1.2.2 [INFO] [stderr] Compiling time-macros-impl v0.1.2 [INFO] [stderr] Compiling async-trait v0.1.51 [INFO] [stderr] Compiling tracing-attributes v0.1.18 [INFO] [stderr] Compiling validator_derive v0.14.0 [INFO] [stderr] Compiling clap_derive v3.0.0-rc.4 [INFO] [stderr] Compiling darling_macro v0.13.1 [INFO] [stderr] Compiling zeroize v1.3.0 [INFO] [stderr] Compiling time-macros v0.1.1 [INFO] [stderr] Compiling darling v0.13.1 [INFO] [stderr] Compiling thiserror v1.0.30 [INFO] [stderr] Compiling structopt v0.3.25 [INFO] [stderr] Compiling tracing v0.1.29 [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.0.0-rc.4 [INFO] [stderr] Compiling simple_excel_writer v0.1.9 [INFO] [stderr] Compiling futures-executor v0.3.18 [INFO] [stderr] Compiling futures v0.3.18 [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 rust_decimal v1.18.0 [INFO] [stderr] Compiling ipnetwork v0.17.0 [INFO] [stderr] Compiling toml v0.5.8 [INFO] [stderr] Compiling serde_yaml v0.8.23 [INFO] [stderr] Compiling serde_urlencoded v0.7.0 [INFO] [stderr] Compiling mio v0.7.14 [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 want v0.3.0 [INFO] [stderr] Compiling calamine v0.18.0 [INFO] [stderr] Compiling itertools v0.10.1 [INFO] [stderr] Compiling ignore v0.4.18 [INFO] [stderr] Compiling simple_asn1 v0.5.4 [INFO] [stderr] Compiling simple_asn1 v0.4.1 [INFO] [stderr] Compiling html_parser v0.6.2 [INFO] [stderr] Compiling rexpr v1.0.7 [INFO] [stderr] Compiling rbson v2.0.3 [INFO] [stderr] Compiling validator v0.14.0 [INFO] [stderr] Compiling proc-macro-crate v1.1.0 [INFO] [stderr] Compiling rsa v0.4.1 [INFO] [stderr] Compiling jsonwebtoken v7.2.0 [INFO] [stderr] Compiling globwalk v0.8.1 [INFO] [stderr] Compiling py_sql v1.0.1 [INFO] [stderr] Compiling fast_log v1.4.9 [INFO] [stderr] Compiling poem-derive v1.2.4 [INFO] [stderr] Compiling sqlformat v0.1.8 [INFO] [stderr] Compiling rbatis_sql_macro v3.0.7 [INFO] [stderr] Compiling rbatis-macro-driver v3.0.5 [INFO] [stderr] Compiling tokio-util v0.6.9 [INFO] [stderr] Compiling tokio-rustls v0.22.0 [INFO] [stderr] Compiling tokio-stream v0.1.8 [INFO] [stderr] Compiling tera v1.15.0 [INFO] [stderr] Compiling sqlx-rt v0.5.9 [INFO] [stderr] Compiling sqlx-core v0.5.9 [INFO] [stderr] Compiling combine v4.6.2 [INFO] [stderr] Compiling h2 v0.3.7 [INFO] [stderr] Compiling libxlsxwriter-sys v1.1.1 [INFO] [stderr] Compiling rbatis_sql v3.0.13 [INFO] [stderr] Compiling hyper v0.14.15 [INFO] [stderr] Compiling rbatis-core v3.0.18 [INFO] [stderr] Compiling rbatis v3.0.27 [INFO] [stderr] Compiling redis v0.21.4 [INFO] [stderr] Compiling crab-system v0.1.0 (/opt/rustwide/workdir/crab-system) [INFO] [stderr] Compiling generator v0.1.0 (/opt/rustwide/workdir/generator) [INFO] [stderr] Compiling poem v1.2.4 [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] ............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, fn(arg : & str) -> String > [INFO] [stdout] { [INFO] [stdout] let mut m : std :: collections :: HashMap < String, fn(arg : & str) -> [INFO] [stdout] String > = std :: 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] 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 tables_columns(table_names : & str) -> rbatis :: core :: Result < [INFO] [stdout] Vec < 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 tables_columns(arg : & rbson :: Bson, _tag : char) {} [INFO] [stdout] let(mut sql, rb_args) = [INFO] [stdout] tables_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": "tables_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] tables_columns(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, 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] /// 参数配置表 [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, fn(arg : & str) -> String > [INFO] [stdout] { [INFO] [stdout] let mut m : std :: collections :: HashMap < String, fn(arg : & str) -> [INFO] [stdout] String > = std :: 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, fn(arg : & str) -> String > [INFO] [stdout] { [INFO] [stdout] let mut m : std :: collections :: HashMap < String, fn(arg : & str) -> [INFO] [stdout] String > = std :: 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, fn(arg : & str) -> String > [INFO] [stdout] { [INFO] [stdout] let mut m : std :: collections :: HashMap < String, fn(arg : & str) -> [INFO] [stdout] String > = std :: 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, fn(arg : & str) -> String > [INFO] [stdout] { [INFO] [stdout] let mut m : std :: collections :: HashMap < String, fn(arg : & str) -> [INFO] [stdout] String > = std :: 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, fn(arg : & str) -> String > [INFO] [stdout] { [INFO] [stdout] let mut m : std :: collections :: HashMap < String, fn(arg : & str) -> [INFO] [stdout] String > = std :: 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, fn(arg : & str) -> String > [INFO] [stdout] { [INFO] [stdout] let mut m : std :: collections :: HashMap < String, fn(arg : & str) -> [INFO] [stdout] String > = std :: 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: unused import: `Timestamp` [INFO] [stdout] --> crab-system/src/model/gen_config_template.rs:1:26 [INFO] [stdout] | [INFO] [stdout] 1 | use rbatis::{crud_table, Timestamp}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Timestamp` [INFO] [stdout] --> crab-system/src/model/gen_table.rs:1:26 [INFO] [stdout] | [INFO] [stdout] 1 | use rbatis::{crud_table, Timestamp}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Timestamp` [INFO] [stdout] --> crab-system/src/model/gen_table_column.rs:1:26 [INFO] [stdout] | [INFO] [stdout] 1 | use rbatis::{crud_table, Timestamp}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `#[macro_use]` import [INFO] [stdout] --> crab-system/src/lib.rs:21:1 [INFO] [stdout] | [INFO] [stdout] 21 | #[macro_use] [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `#[macro_use]` import [INFO] [stdout] --> crab-system/src/lib.rs:23:1 [INFO] [stdout] | [INFO] [stdout] 23 | #[macro_use] [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function is never used: `validate_captcha` [INFO] [stdout] --> crab-system/src/service/sys_auth.rs:136:8 [INFO] [stdout] | [INFO] [stdout] 136 | fn validate_captcha(_username: &str, code: &str, uuid: &str) -> Result<(), CrabError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function is never used: `file_type_by_name` [INFO] [stdout] --> crab-system/src/common/utils/file/file_type.rs:12:10 [INFO] [stdout] | [INFO] [stdout] 12 | async fn file_type_by_name(file_name: &str) -> &str { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function is never used: `init_text` [INFO] [stdout] --> crab-system/src/common/utils/html/escape.rs:6:4 [INFO] [stdout] | [INFO] [stdout] 6 | fn init_text() -> [[char; 1]; 64] { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 8 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Compiling crab-admin v0.1.0 (/opt/rustwide/workdir/crab-admin) [INFO] [stdout] warning: unused import: `Json` [INFO] [stdout] --> crab-admin/src/tool_gen.rs:4:11 [INFO] [stdout] | [INFO] [stdout] 4 | web::{Json, Query}, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function is never used: `new` [INFO] [stdout] --> crab-admin/src/result.rs:59:12 [INFO] [stdout] | [INFO] [stdout] 59 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function is never used: `fail` [INFO] [stdout] --> crab-admin/src/result.rs:79:12 [INFO] [stdout] | [INFO] [stdout] 79 | pub fn fail() -> Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function is never used: `with_code` [INFO] [stdout] --> crab-admin/src/result.rs:89:12 [INFO] [stdout] | [INFO] [stdout] 89 | pub fn with_code(mut self, code: u32) -> Self { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Compiling xlsxwriter v0.3.5 [INFO] [stderr] Compiling crab-excel v0.1.0 (/opt/rustwide/workdir/crab-excel) [INFO] [stdout] warning: 4 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 1m 07s [INFO] running `Command { std: "docker" "inspect" "4ed607fd00c9da91b1e0d0ad843c300f64347dde9422fc7c0418d30468c25c0d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "4ed607fd00c9da91b1e0d0ad843c300f64347dde9422fc7c0418d30468c25c0d", kill_on_drop: false }` [INFO] [stdout] 4ed607fd00c9da91b1e0d0ad843c300f64347dde9422fc7c0418d30468c25c0d [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-16/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-16/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=warn" "-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" "+beta-2022-04-10" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] b47faf465d560c9140eb23ca28a5bcf8fcbd680f2f6e17c86b79d6c24f67e45b [INFO] running `Command { std: "docker" "start" "-a" "b47faf465d560c9140eb23ca28a5bcf8fcbd680f2f6e17c86b79d6c24f67e45b", kill_on_drop: false }` [INFO] [stderr] Compiling async-stream-impl v0.3.2 [INFO] [stderr] Compiling crab-excel-derive v0.1.0 (/opt/rustwide/workdir/crab-excel-derive) [INFO] [stderr] Compiling crab-excel v0.1.0 (/opt/rustwide/workdir/crab-excel) [INFO] [stdout] warning: unused import: `Timestamp` [INFO] [stdout] --> crab-system/src/model/gen_config_template.rs:1:26 [INFO] [stdout] | [INFO] [stdout] 1 | use rbatis::{crud_table, Timestamp}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Timestamp` [INFO] [stdout] --> crab-system/src/model/gen_table.rs:1:26 [INFO] [stdout] | [INFO] [stdout] 1 | use rbatis::{crud_table, Timestamp}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Timestamp` [INFO] [stdout] --> crab-system/src/model/gen_table_column.rs:1:26 [INFO] [stdout] | [INFO] [stdout] 1 | use rbatis::{crud_table, Timestamp}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `#[macro_use]` import [INFO] [stdout] --> crab-system/src/lib.rs:21:1 [INFO] [stdout] | [INFO] [stdout] 21 | #[macro_use] [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `#[macro_use]` import [INFO] [stdout] --> crab-system/src/lib.rs:23:1 [INFO] [stdout] | [INFO] [stdout] 23 | #[macro_use] [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function is never used: `validate_captcha` [INFO] [stdout] --> crab-system/src/service/sys_auth.rs:136:8 [INFO] [stdout] | [INFO] [stdout] 136 | fn validate_captcha(_username: &str, code: &str, uuid: &str) -> Result<(), CrabError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function is never used: `file_type_by_name` [INFO] [stdout] --> crab-system/src/common/utils/file/file_type.rs:12:10 [INFO] [stdout] | [INFO] [stdout] 12 | async fn file_type_by_name(file_name: &str) -> &str { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function is never used: `init_text` [INFO] [stdout] --> crab-system/src/common/utils/html/escape.rs:6:4 [INFO] [stdout] | [INFO] [stdout] 6 | fn init_text() -> [[char; 1]; 64] { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 8 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Compiling generator v0.1.0 (/opt/rustwide/workdir/generator) [INFO] [stderr] Compiling crab-admin v0.1.0 (/opt/rustwide/workdir/crab-admin) [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: unused variable: `excel_data` [INFO] [stdout] --> crab-excel/tests/test.rs:89:9 [INFO] [stdout] | [INFO] [stdout] 89 | let excel_data = wb.close().expect("close excel error!"); [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_excel_data` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> crab-excel/tests/test.rs:18:9 [INFO] [stdout] | [INFO] [stdout] 18 | let mut format1 = workbook.add_format().set_font_color(FormatColor::Red); [INFO] [stdout] | ----^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> crab-excel/tests/test.rs:20:9 [INFO] [stdout] | [INFO] [stdout] 20 | let mut format2 = workbook [INFO] [stdout] | ----^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> crab-excel/tests/test.rs:25:9 [INFO] [stdout] | [INFO] [stdout] 25 | let mut format3 = workbook [INFO] [stdout] | ----^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [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 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] warning: 5 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] ............gen macro py_sql : [INFO] [stdout] pub async fn tables_columns(table_names : & str) -> rbatis :: core :: Result < [INFO] [stdout] Vec < 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 tables_columns(arg : & rbson :: Bson, _tag : char) {} [INFO] [stdout] let(mut sql, rb_args) = [INFO] [stdout] tables_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": "tables_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] tables_columns(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, 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] warning: unused import: `Json` [INFO] [stdout] --> crab-admin/src/tool_gen.rs:4:11 [INFO] [stdout] | [INFO] [stdout] 4 | web::{Json, Query}, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Compiling async-stream v0.3.2 [INFO] [stderr] Compiling tokio-test v0.4.2 [INFO] [stdout] warning: associated function is never used: `new` [INFO] [stdout] --> crab-admin/src/result.rs:59:12 [INFO] [stdout] | [INFO] [stdout] 59 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function is never used: `fail` [INFO] [stdout] --> crab-admin/src/result.rs:79:12 [INFO] [stdout] | [INFO] [stdout] 79 | pub fn fail() -> Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function is never used: `with_code` [INFO] [stdout] --> crab-admin/src/result.rs:89:12 [INFO] [stdout] | [INFO] [stdout] 89 | pub fn with_code(mut self, code: u32) -> Self { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 4 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Compiling crab-system v0.1.0 (/opt/rustwide/workdir/crab-system) [INFO] [stdout] warning: 4 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 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, fn(arg : & str) -> String > [INFO] [stdout] { [INFO] [stdout] let mut m : std :: collections :: HashMap < String, fn(arg : & str) -> [INFO] [stdout] String > = std :: 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, fn(arg : & str) -> String > [INFO] [stdout] { [INFO] [stdout] let mut m : std :: collections :: HashMap < String, fn(arg : & str) -> [INFO] [stdout] String > = std :: 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, fn(arg : & str) -> String > [INFO] [stdout] { [INFO] [stdout] let mut m : std :: collections :: HashMap < String, fn(arg : & str) -> [INFO] [stdout] String > = std :: 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, fn(arg : & str) -> String > [INFO] [stdout] { [INFO] [stdout] let mut m : std :: collections :: HashMap < String, fn(arg : & str) -> [INFO] [stdout] String > = std :: 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, fn(arg : & str) -> String > [INFO] [stdout] { [INFO] [stdout] let mut m : std :: collections :: HashMap < String, fn(arg : & str) -> [INFO] [stdout] String > = std :: 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, fn(arg : & str) -> String > [INFO] [stdout] { [INFO] [stdout] let mut m : std :: collections :: HashMap < String, fn(arg : & str) -> [INFO] [stdout] String > = std :: 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, fn(arg : & str) -> String > [INFO] [stdout] { [INFO] [stdout] let mut m : std :: collections :: HashMap < String, fn(arg : & str) -> [INFO] [stdout] String > = std :: 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: unused import: `Timestamp` [INFO] [stdout] --> crab-system/src/model/gen_config_template.rs:1:26 [INFO] [stdout] | [INFO] [stdout] 1 | use rbatis::{crud_table, Timestamp}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Timestamp` [INFO] [stdout] --> crab-system/src/model/gen_table.rs:1:26 [INFO] [stdout] | [INFO] [stdout] 1 | use rbatis::{crud_table, Timestamp}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Timestamp` [INFO] [stdout] --> crab-system/src/model/gen_table_column.rs:1:26 [INFO] [stdout] | [INFO] [stdout] 1 | use rbatis::{crud_table, Timestamp}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `#[macro_use]` import [INFO] [stdout] --> crab-system/src/lib.rs:21:1 [INFO] [stdout] | [INFO] [stdout] 21 | #[macro_use] [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `#[macro_use]` import [INFO] [stdout] --> crab-system/src/lib.rs:23:1 [INFO] [stdout] | [INFO] [stdout] 23 | #[macro_use] [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function is never used: `validate_captcha` [INFO] [stdout] --> crab-system/src/service/sys_auth.rs:136:8 [INFO] [stdout] | [INFO] [stdout] 136 | fn validate_captcha(_username: &str, code: &str, uuid: &str) -> Result<(), CrabError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function is never used: `file_type_by_name` [INFO] [stdout] --> crab-system/src/common/utils/file/file_type.rs:12:10 [INFO] [stdout] | [INFO] [stdout] 12 | async fn file_type_by_name(file_name: &str) -> &str { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function is never used: `init_text` [INFO] [stdout] --> crab-system/src/common/utils/html/escape.rs:6:4 [INFO] [stdout] | [INFO] [stdout] 6 | fn init_text() -> [[char; 1]; 64] { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 8 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished test [unoptimized + debuginfo] target(s) in 8.08s [INFO] [stderr] Executable unittests src/main.rs (/opt/rustwide/target/debug/deps/crab_admin-6ea55858448e7170) [INFO] [stderr] Executable unittests src/lib.rs (/opt/rustwide/target/debug/deps/crab_excel-f1b7e7dc70994a99) [INFO] [stderr] Executable tests/excel_writer.rs (/opt/rustwide/target/debug/deps/excel_writer-cc8b536cb0a85473) [INFO] [stderr] Executable tests/test.rs (/opt/rustwide/target/debug/deps/test-43b0f148efbc22cf) [INFO] [stderr] Executable unittests src/lib.rs (/opt/rustwide/target/debug/deps/crab_excel_derive-192bbea3e0780c3b) [INFO] [stderr] Executable unittests src/lib.rs (/opt/rustwide/target/debug/deps/crab_system-91ad48bb68ab06ff) [INFO] [stderr] Executable unittests src/main.rs (/opt/rustwide/target/debug/deps/generator-92ab43e1c698371e) [INFO] running `Command { std: "docker" "inspect" "b47faf465d560c9140eb23ca28a5bcf8fcbd680f2f6e17c86b79d6c24f67e45b", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "b47faf465d560c9140eb23ca28a5bcf8fcbd680f2f6e17c86b79d6c24f67e45b", kill_on_drop: false }` [INFO] [stdout] b47faf465d560c9140eb23ca28a5bcf8fcbd680f2f6e17c86b79d6c24f67e45b [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-16/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-16/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=warn" "-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" "+beta-2022-04-10" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] 0bb5390a0fb3b205dff0f3b9f07dca9957a2c9decbbc3166ae3eb0708f9c3827 [INFO] running `Command { std: "docker" "start" "-a" "0bb5390a0fb3b205dff0f3b9f07dca9957a2c9decbbc3166ae3eb0708f9c3827", kill_on_drop: false }` [INFO] [stderr] warning: unused import: `Timestamp` [INFO] [stderr] --> crab-system/src/model/gen_config_template.rs:1:26 [INFO] [stderr] | [INFO] [stderr] 1 | use rbatis::{crud_table, Timestamp}; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `Timestamp` [INFO] [stderr] --> crab-system/src/model/gen_table.rs:1:26 [INFO] [stderr] | [INFO] [stderr] 1 | use rbatis::{crud_table, Timestamp}; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Timestamp` [INFO] [stderr] --> crab-system/src/model/gen_table_column.rs:1:26 [INFO] [stderr] | [INFO] [stderr] 1 | use rbatis::{crud_table, Timestamp}; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused `#[macro_use]` import [INFO] [stderr] --> crab-system/src/lib.rs:21:1 [INFO] [stderr] | [INFO] [stderr] 21 | #[macro_use] [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused `#[macro_use]` import [INFO] [stderr] --> crab-system/src/lib.rs:23:1 [INFO] [stderr] | [INFO] [stderr] 23 | #[macro_use] [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: associated function is never used: `validate_captcha` [INFO] [stderr] --> crab-system/src/service/sys_auth.rs:136:8 [INFO] [stderr] | [INFO] [stderr] 136 | fn validate_captcha(_username: &str, code: &str, uuid: &str) -> Result<(), CrabError> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` on by default [INFO] [stderr] [INFO] [stderr] warning: function is never used: `file_type_by_name` [INFO] [stderr] --> crab-system/src/common/utils/file/file_type.rs:12:10 [INFO] [stderr] | [INFO] [stderr] 12 | async fn file_type_by_name(file_name: &str) -> &str { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `init_text` [INFO] [stderr] --> crab-system/src/common/utils/html/escape.rs:6:4 [INFO] [stderr] | [INFO] [stderr] 6 | fn init_text() -> [[char; 1]; 64] { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `excel_data` [INFO] [stderr] --> crab-excel/tests/test.rs:89:9 [INFO] [stderr] | [INFO] [stderr] 89 | let excel_data = wb.close().expect("close excel error!"); [INFO] [stderr] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_excel_data` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> crab-excel/tests/test.rs:18:9 [INFO] [stderr] | [INFO] [stderr] 18 | let mut format1 = workbook.add_format().set_font_color(FormatColor::Red); [INFO] [stderr] | ----^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_mut)]` on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> crab-excel/tests/test.rs:20:9 [INFO] [stderr] | [INFO] [stderr] 20 | let mut format2 = workbook [INFO] [stderr] | ----^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> crab-excel/tests/test.rs:25:9 [INFO] [stderr] | [INFO] [stderr] 25 | let mut format3 = workbook [INFO] [stderr] | ----^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [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-system` (lib) generated 8 warnings [INFO] [stderr] warning: `crab-excel` (test "test") generated 4 warnings [INFO] [stderr] warning: `crab-system` (lib test) generated 8 warnings (8 duplicates) [INFO] [stderr] warning: `crab-excel` (test "excel_writer") generated 5 warnings [INFO] [stderr] warning: unused import: `Json` [INFO] [stderr] --> crab-admin/src/tool_gen.rs:4:11 [INFO] [stderr] | [INFO] [stderr] 4 | web::{Json, Query}, [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` on by default [INFO] [stderr] [INFO] [stderr] warning: associated function is never used: `new` [INFO] [stderr] --> crab-admin/src/result.rs:59:12 [INFO] [stderr] | [INFO] [stderr] 59 | pub fn new() -> Self { [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` on by default [INFO] [stderr] [INFO] [stderr] warning: associated function is never used: `fail` [INFO] [stderr] --> crab-admin/src/result.rs:79:12 [INFO] [stderr] | [INFO] [stderr] 79 | pub fn fail() -> Self { [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: associated function is never used: `with_code` [INFO] [stderr] --> crab-admin/src/result.rs:89:12 [INFO] [stderr] | [INFO] [stderr] 89 | pub fn with_code(mut self, code: u32) -> Self { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `crab-admin` (bin "crab-admin" test) generated 4 warnings [INFO] [stderr] Finished test [unoptimized + debuginfo] target(s) in 0.14s [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/crab_admin-6ea55858448e7170) [INFO] [stdout] [INFO] [stdout] running 0 tests [INFO] [stdout] [INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/crab_excel-f1b7e7dc70994a99) [INFO] [stdout] [INFO] [stdout] running 0 tests [INFO] [stdout] [INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Running tests/excel_writer.rs (/opt/rustwide/target/debug/deps/excel_writer-cc8b536cb0a85473) [INFO] [stdout] [INFO] [stdout] running 1 test [INFO] [stderr] thread panicked while panicking. aborting. [INFO] [stderr] error: test failed, to rerun pass '-p crab-excel --test excel_writer' [INFO] [stderr] [INFO] [stderr] Caused by: [INFO] [stderr] process didn't exit successfully: `/opt/rustwide/target/debug/deps/excel_writer-cc8b536cb0a85473` (signal: 6, SIGABRT: process abort signal) [INFO] running `Command { std: "docker" "inspect" "0bb5390a0fb3b205dff0f3b9f07dca9957a2c9decbbc3166ae3eb0708f9c3827", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "0bb5390a0fb3b205dff0f3b9f07dca9957a2c9decbbc3166ae3eb0708f9c3827", kill_on_drop: false }` [INFO] [stdout] 0bb5390a0fb3b205dff0f3b9f07dca9957a2c9decbbc3166ae3eb0708f9c3827