如何改進

在前一篇文章中,在實作 Query 的時候,是直接把取資料的程式碼寫在裡面。但假如 Field 太多且邏輯複雜,會有不易維護的問題。這時就需要一個可以把邏輯拆開的做法,先看原本的程式碼:

public class MainQuery: ObjectGraphType
{
    public MainQuery(IEmployeeRepository employeeRepository, ICompanyRepository companyRepository)
    {
        Name = "Query";
        Field<ListGraphType<EmployeeType>>(
            "employees",
            resolve: context => employeeRepository.GetAll()
        );
        Field<ListGraphType<CompanyType>>(
            "companies",
            resolve: context => companyRepository.GetAll()
        );
    }
}

這邊先建一個新類別,來合併 employees 跟 companies 這兩個 Field:

public class AllDatas : ObjectGraphType
{
    public AllDatas(IEmployeeRepository employeeRepository, ICompanyRepository companyRepository)
    {
        Name = "AllDatas";
        Field<ListGraphType<EmployeeType>>(
            "employees",
            resolve: context => employeeRepository.GetAll()
        );
        Field<ListGraphType<CompanyType>>(
            "companies",
            resolve: context =>
            {
                
                return companyRepository.GetAll();
            }
        );
    }
}

然後再修改原本的 Query:

public MainQuery()
{
    Name = "Query";
    Field<AllDatas>(
        "AllDatas",
        resolve: context => new {}
    );
}

做法簡單易懂,接下來就是再依實際需求,再去細分邏輯的拆解。

參考資料