fix: migrate pending orders #121
Loading…
Reference in New Issue
No description provided.
Delete Branch "ldragan/hedera-web:taro/pending-orders"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Needs verdnatura/salix#3506 fusionada
WIP: taro/pending-ordersto WIP: migrate pending ordersd627bdb59a
to15720e5a59
15720e5a59
to0f0717f382
WIP: migrate pending ordersto migrate pending ordersmigrate pending ordersto refactor: migrate pending ordersrefactor: migrate pending ordersto fix: migrate pending orders@ -66,3 +102,1 @@
onMounted(async () => {
getOrders();
});
watch(
Entiendo que este watch es para cuando hacemos suplantar no¿?
Aquí me quedó pendiente poner el código de Lilium, que Willy compartió conmigo.
@jsegarra probé el código del FetchData component, pero usar un componente Vue para algo que no tienen nada visual no me parece lo ideal. A nivel patrones, para ese tipo de cosas son los data stores, hooks, etc.
Sí es cierto que, cual dijiste, esto será necesario en varios componentes (no todos), así que lo refactoricé para que sea un simple
onUserId
del lado de los componentes. Esa función vive en su propio archivo,src/utils/onuserId.js
. La estoy usando en este PR y https://gitea.verdnatura.es/verdnatura/hedera-web/pulls/124/files.oki
@ -38,0 +35,4 @@
const filter = {
where: {
clientFk,
'address.clientFk': clientFk,
haces para que te traiga el objeto de address?
Quiero decir, la relacion ya está con clave primaria, por tanto no haria falta ponerlo en el where
Coincido, pero así estaba la query y preferí no cambiarla. (La view
myAddress
tiene incluido el filtro declientFk
).Por lo que veo en
order.json
, eljoin
se hace via eladdress_id
, y no hay una garantía real y determinística de que eladdress.clientFk
coincida con elorder.clientFk
— ello depende de que nunca se haga uninsert
oupdate
"incorrecto" en algún lugar del código, para alguna defición de "correcto".Yo considero que remover esta parte del
where
sería un refactor, y no es estrictamente parte de la migración. Estoy a favor, pero suelo preferir el camino conservador, y encarar los dos cambios en 2 PRs separados, para simplificar el debugging en el remoto caso de que ocurra un error inesperado por alguna incongruencia en la data.Por otro lado, lo más probable es que remover esta condición no cause ningún problema, y, aún si lo hiciera, el impacto debería ser mínimo, inmediatamente observable y fácil de resolver.
Si estás a favor de quitar el
'address.clientFk': clientFk,
, entonces yo también :)Dale con todo y quitemosla
y validamos con los tests
Awesome. Hecho :)
@ -38,0 +37,4 @@
clientFk,
'address.clientFk': clientFk,
isConfirmed: 0,
source_app: 'WEB',
este source_app no lo veo en la query origen
La query original se hacía contra
myOrder
, que es una view:La view incluye el
source_app
y otros filtros:Comentado por @alexm
Puedes definirte una vista como un modelo normal
modules/worker/back/models/worker-department.json por ejemplo, es una vista
For the record, esto lo charlamos en la daily, y quedamos en ver si al equipo le parece bien dejar esto así, o hacer un cambio mayor, para agregar un modelo loopback sobre una view.
Mi argumento a favor de dejar esto así es que, al largo plazo, lo mejor sería directamente ya no usar las views, y usar completamente lo que ofrece loopback (hacerlo "the loopback way", digamos).
Por otro lado, la view incluye la llamada al
myUser_getId()
, el antiguo método de autorización, que, considero, deberíamos apuntar a eliminar completamente. Usar la view implica usar una transacción de la DB y ejecutar un'CALL account.myUser_loginWithName((SELECT name FROM account.user WHERE id = ?))',
, como lo haceVnModel.rawSql
. Perdemos casi todos los beneficios de loopback.Lo veo bien, pero me surge la duda en la linea 88...mantenemos una SQL? No deberiamos usar la llamada axios a salix?
Done ✅
@ -52,3 +78,2 @@
}
);
await api.delete(`Orders/${id}`);
orders.value.splice(index, 1);
Lo veo bien, pero cuando tengamos un respiro miraria de hacer algo para que refresque haciendo un refetch por ejemplo. https://gitea.verdnatura.es/verdnatura/salix-front/src/branch/dev/src/components/VnTable/VnTable.vue#L311
@ -38,0 +32,4 @@
const filter = {
where: {
clientFk,
isConfirmed: 0,
a nivel de BD funciona bien, pero como lo consultamos desde el front, mejor aplicamos del standard Booleano true/false
@ -0,0 +7,4 @@
export const onUserId = (cb) => watch(
() => userStore?.user?.id,
async userId => {
if (userId) {
Usando clausulas de guarda podemos quitar un nivel de indexación
if (!userId) return;