AuthorizationFetchers.kt

package io.github.lishangbu.avalon.auth.repository

import io.github.lishangbu.avalon.auth.entity.*
import org.babyfish.jimmer.sql.kt.fetcher.newFetcher

/** 认证模块常用抓取器。 */
internal object AuthorizationFetchers {
    /** 用户及角色抓取器。 */
    val USER_WITH_ROLES =
        newFetcher(User::class).`by` {
            allScalarFields()
            roles {
                allScalarFields()
                permissions {
                    allScalarFields()
                    menu {
                        allScalarFields()
                    }
                }
            }
        }

    /** 角色及菜单抓取器。 */
    val ROLE_WITH_MENUS =
        newFetcher(Role::class).`by` {
            allScalarFields()
            menus {
                allScalarFields()
                parent {
                    allScalarFields()
                }
            }
        }

    /** 角色的菜单与权限点抓取器。 */
    val ROLE_WITH_BINDINGS =
        newFetcher(Role::class).`by` {
            allScalarFields()
            menus {
                allScalarFields()
                parent {
                    allScalarFields()
                }
            }
            permissions {
                allScalarFields()
                menu {
                    allScalarFields()
                }
            }
        }

    /** 菜单标量字段抓取器。 */
    val MENU =
        newFetcher(Menu::class).`by` {
            allScalarFields()
            parent {
                allScalarFields()
            }
        }

    /** 权限点及所属菜单抓取器。 */
    val PERMISSION_WITH_MENU =
        newFetcher(Permission::class).`by` {
            allScalarFields()
            menu {
                allScalarFields()
                parent {
                    allScalarFields()
                }
            }
        }
}