There is a DAL in my application code. And I am using Table Data Gateway pattern for DAL which means I create class for each table.
Here is a demo, there are three tables in the database: users, addresses, organizations. I create a UserGateWay class for users table.
class UserGateWay {
public async findById(id: string) {
const query = `
select * from users where user_id = ?
`;
return this.knex.raw(query, [id]);
}
public async findByIdWithAddress(id: string) {
const query = `
select
u.*,
addr.*
from users as u
inner join addresses as addr using (user_id)
where u.user_id = ?;
`;
return this.knex.raw(query, [id]);
}
public async findByIdWithOtherTableDatas(id) {
const query = `
select
u.*,
addr.*,
orgs.org_name,
from users as u
inner join addresses as addr using (user_id)
inner join organizations as orgs using (org_id)
where u.user_id = ?;
`;
return this.knex.raw(query, [id]);
}
}
findById method is simple, the issue is how should I name the findByIdWithAddress and findByIdWithOtherTableDatas methods.
If there are many join clauses within the method, I don't know how to name the method. Especially the very similar but different scenes.
I don't want to name it like findByIdWithAddressAndOrgsAndOthers. Maybe I use this pattern in the wrong way or this pattern is not suitable for table join case?
Aucun commentaire:
Enregistrer un commentaire