Skip to content

Commit 782ee30

Browse files
committed
fix: Transaction function cannot return a promise (temporary fix)
1 parent 62bda0a commit 782ee30

File tree

3 files changed

+34
-14
lines changed

3 files changed

+34
-14
lines changed

src/actions/build-image.ts

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,21 @@ import db from "~/database";
55
import deleteBuildImage from "~/operations/deleteBuildImage";
66

77
export async function destroy(id: string, _: FormData) {
8-
const serviceId = await db.transaction(async tx => {
9-
await removeImage(id);
10-
const image = await deleteBuildImage(tx, id);
11-
if (!image) throw new Error("Invalid Build Image");
12-
return image.serviceId;
13-
});
8+
let serviceId: string = "";
9+
try {
10+
serviceId = await db.transaction(async tx => {
11+
await removeImage(id);
12+
const image = await deleteBuildImage(tx, id);
13+
if (!image) throw new Error("Invalid Build Image");
14+
return image.serviceId;
15+
});
16+
} catch (error) {
17+
if (error && typeof error === "object" && "message" in error && error.message === "Transaction function cannot return a promise") {
18+
// do nothing. This is a known bug in Drizzle ORM
19+
// Check https://github.com/omermecitoglu/buttler/issues/40
20+
} else {
21+
throw error;
22+
}
23+
}
1424
redirect(`/services/${serviceId}`);
1525
}

src/actions/service-networks.ts

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,19 @@ import createServiceLink from "~/operations/createServiceLink";
77
import deleteNetwork from "~/operations/deleteNetwork";
88

99
export async function create(serviceId: string) {
10-
await db.transaction(async tx => {
11-
const { id: networkId } = await createNetwork(tx, serviceId, "custom");
12-
await createDockerNetwork(networkId);
13-
});
10+
try {
11+
await db.transaction(async tx => {
12+
const { id: networkId } = await createNetwork(tx, serviceId, "custom");
13+
await createDockerNetwork(networkId);
14+
});
15+
} catch (error) {
16+
if (error && typeof error === "object" && "message" in error && error.message === "Transaction function cannot return a promise") {
17+
// do nothing. This is a known bug in Drizzle ORM
18+
// Check https://github.com/omermecitoglu/buttler/issues/40
19+
} else {
20+
throw error;
21+
}
22+
}
1423
redirect(`/services/${serviceId}/networks`);
1524
}
1625

src/actions/service.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -65,11 +65,12 @@ export async function create(formData: FormData) {
6565
}
6666
});
6767
} catch (error) {
68-
console.error(error);
69-
if (error && typeof error === "object" && "message" in error) {
70-
console.log(error.message);
68+
if (error && typeof error === "object" && "message" in error && error.message === "Transaction function cannot return a promise") {
69+
// do nothing. This is a known bug in Drizzle ORM
70+
// Check https://github.com/omermecitoglu/buttler/issues/40
71+
} else {
72+
throw error;
7173
}
72-
throw error;
7374
}
7475
redirect("/services");
7576
}

0 commit comments

Comments
 (0)