[MOD/WIP] Separate DB entries for the txns
Some checks are pending
Compile Telodendria / Compile Telodendria (x86, alpine-v3.19) (push) Waiting to run
Compile Telodendria / Compile Telodendria (x86, debian-v12.4) (push) Waiting to run
Compile Telodendria / Compile Telodendria (x86, freebsd-v14.0) (push) Waiting to run
Compile Telodendria / Compile Telodendria (x86, netbsd-v9.3) (push) Waiting to run
Compile Telodendria / Compile Telodendria (x86_64, alpine-v3.19) (push) Waiting to run
Compile Telodendria / Compile Telodendria (x86_64, debian-v12.4) (push) Waiting to run
Compile Telodendria / Compile Telodendria (x86_64, freebsd-v14.0) (push) Waiting to run
Compile Telodendria / Compile Telodendria (x86_64, netbsd-v9.3) (push) Waiting to run
Compile Telodendria / Compile Telodendria (x86_64, openbsd-v7.4) (push) Waiting to run

This commit is contained in:
LDA 2024-08-17 01:08:09 +02:00
parent dc0e463c27
commit 4918932a0e

View file

@ -977,39 +977,57 @@ HashMap *
UserGetTransaction(User *user, char *transaction, char *path)
{
HashMap *devices;
DbRef *ref;
if (!user || !transaction || !path)
{
return NULL;
}
devices = JsonValueAsObject(
HashMapGet(UserGetDevices(user), UserGetDeviceId(user))
ref = DbLock(user->db,
4,
"users", user->name,
"txns", UserGetDeviceId(user)
);
return JsonDuplicate(JsonValueAsObject(
JsonGet(devices, 3, "transactions", path, transaction)
));
devices = DbJson(ref);
devices = JsonValueAsObject(JsonGet(devices, 2, path, transaction));
devices = JsonDuplicate(devices);
DbUnlock(user->db, ref);
return devices;
}
void
UserSetTransaction(User *user, char *transaction, char *path, HashMap *resp)
{
HashMap *devices;
DbRef *ref;
if (!user || !transaction || !path || !resp)
{
return;
}
devices = JsonValueAsObject(
HashMapGet(UserGetDevices(user), UserGetDeviceId(user))
);
if (!(ref = DbLock(user->db,
4,
"users", user->name,
"txns", UserGetDeviceId(user)
)))
{
ref = DbCreate(user->db,
4,
"users", user->name,
"txns", UserGetDeviceId(user)
);
}
devices = DbJson(ref);
/* Overwrite the transaction */
JsonValueFree(JsonSet(
devices, JsonValueObject(JsonDuplicate(resp)),
3, "transactions", path, transaction
2, path, transaction
));
DbUnlock(user->db, ref);
}
void
UserAddInvite(User *user, char *roomId)