Skip to content

Commit f7b8eee

Browse files
committed
somewhat improve video deletion maybe
1 parent b5c9b10 commit f7b8eee

4 files changed

Lines changed: 19 additions & 17 deletions

File tree

apps/web/app/(org)/dashboard/folder/[id]/page.tsx

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { getCurrentUser } from "@cap/database/auth/session";
22
import { serverEnv } from "@cap/env";
3-
import { CurrentUser, type Folder } from "@cap/web-domain";
3+
import { CurrentUser, Folder } from "@cap/web-domain";
44
import { Effect } from "effect";
55
import { notFound } from "next/navigation";
66
import {
@@ -18,24 +18,27 @@ import {
1818
} from "./components";
1919
import FolderVideosSection from "./components/FolderVideosSection";
2020

21-
const FolderPage = async ({ params }: { params: { id: Folder.FolderId } }) => {
21+
const FolderPage = async (props: PageProps<"/dashboard/folder/[id]">) => {
22+
const params = await props.params;
23+
const folderId = Folder.FolderId.make(params.id);
24+
2225
const user = await getCurrentUser();
2326
if (!user || !user.activeOrganizationId) return notFound();
2427

2528
return Effect.gen(function* () {
2629
const [childFolders, breadcrumb, videosData] = yield* Effect.all([
27-
getChildFolders(params.id, { variant: "user" }),
28-
getFolderBreadcrumb(params.id),
29-
getVideosByFolderId(params.id, {
30+
getChildFolders(folderId, { variant: "user" }),
31+
getFolderBreadcrumb(folderId),
32+
getVideosByFolderId(folderId, {
3033
variant: "user",
3134
}),
3235
]);
3336

3437
return (
3538
<div>
3639
<div className="flex gap-2 items-center mb-10">
37-
<NewSubfolderButton parentFolderId={params.id} />
38-
<UploadCapButton size="sm" folderId={params.id} />
40+
<NewSubfolderButton parentFolderId={folderId} />
41+
<UploadCapButton size="sm" folderId={folderId} />
3942
</div>
4043
<div className="flex justify-between items-center mb-6 w-full">
4144
<div className="flex overflow-x-auto items-center font-medium">

packages/web-backend/src/Database.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,11 @@
11
import { db } from "@cap/database";
22
import { DatabaseError } from "@cap/web-domain";
3-
import type { Query } from "drizzle-orm";
43
import { Effect } from "effect";
54

65
export class Database extends Effect.Service<Database>()("Database", {
76
effect: Effect.gen(function* () {
87
return {
9-
use: <T>(
10-
cb: (_: ReturnType<typeof db>) => Promise<T> & { toSQL?(): Query },
11-
) =>
8+
use: <T>(cb: (_: ReturnType<typeof db>) => Promise<T>) =>
129
Effect.tryPromise({
1310
try: () => cb(db()),
1411
catch: (cause) => new DatabaseError({ cause }),

packages/web-backend/src/Videos/VideosRepo.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -45,16 +45,16 @@ export class VideosRepo extends Effect.Service<VideosRepo>()("VideosRepo", {
4545
});
4646

4747
const delete_ = (id: Video.VideoId) =>
48-
db.use(async (db) =>
49-
db.transaction((db) =>
50-
Promise.all([
48+
db.use(async (db) => {
49+
await db.transaction(async (db) => {
50+
await Promise.all([
5151
db.delete(Db.videos).where(Dz.eq(Db.videos.id, id)),
5252
db
5353
.delete(Db.videoUploads)
5454
.where(Dz.eq(Db.videoUploads.videoId, id)),
55-
]),
56-
),
57-
);
55+
]);
56+
});
57+
});
5858

5959
const create = (data: CreateVideoInput) =>
6060
Effect.gen(function* () {

packages/web-backend/src/Videos/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@ export class Videos extends Effect.Service<Videos>()("Videos", {
4848
.delete(video.id)
4949
.pipe(Policy.withPolicy(policy.isOwner(video.id)));
5050

51+
yield* Effect.log(`Deleted video ${video.id}`);
52+
5153
const user = yield* CurrentUser;
5254

5355
const prefix = `${user.id}/${video.id}/`;

0 commit comments

Comments
 (0)