pub async fn list( State(state): State<ArcAppState>, Query(frm): Query<form::subject::ListForAdmin>, ) -> Result<resp::JsonResp<model::subject::SubjectPaginate>> { let handler_name = "admin/subject/list"; let p = get_pool(&state); let subjects = model::subject::Subject::list( &*p, &model::subject::SubjectListFilter { pq: model::subject::SubjectPaginateReq { page: frm.pq.page(), page_size: frm.pq.page_size(), }, order: None, is_del: frm.is_del(), status: frm.status, name: frm.name, slug: frm.slug, }, ) .await .map_err(Error::from) .map_err(log_error(handler_name))?; Ok(resp::ok(subjects)) } #[derive(Debug, Default, Deserialize, Serialize, sqlx::FromRow, Db)] #[db(table = subjects, pk = id, del_field = is_del)] pub struct Subject { #[db(find)] #[db(skip_update)] pub id: String, #[db(list_opt)] #[db(list_opt_like)] pub name: String, #[db(find)] #[db(exists)] #[db(list_opt)] #[db(list_opt_like)] pub slug: String, pub summary: String, #[db(find_opt)] #[db(list_opt)] pub is_del: bool, pub cover: String, #[db(list_opt)] pub status: Status, pub price: Decimal, pub pin: i32, }
作为 Java 开发,看到这个 list 方法本能的想跳转过去看下这个 model::subject::Subject::list 方法的实现咋写的,但是跳转过去是宏? 那我咋知道最后是咋写的呢?
实在是懵逼~
![]() | 1 zizon 183 天前 你们 mybatis/spring 不最喜欢干这种事么? |
![]() | 2 lait 183 天前 使用宏展开指令,就能看到最终的实现了,具体指令自己搜搜哈,不知道现在 VS Code 有相应的插件可以一键宏展开没有 |
![]() | 5 araraloren 167 天前 宏是非常高阶的技巧了,可以简单的 expands 看一下展开后的代码,也有插件可以 expand 代码片段,不过我喜欢全部展开对着看。 |
6 5261 OP @araraloren 老哥能推荐下啥插件不? 宏 玩的好确实是真的 666 ,要是能拿来写 Java 的代码生成器就牛逼了 |
![]() | 7 araraloren 166 天前 @5261 不知道,自己网上找呗。。 |
8 cppc 152 天前 JB 家的 RustRover ,鼠标放上去会显示宏展开后的完整代码,你试试 |