star on github{" "}
@@ -300,7 +265,22 @@ export default function Home({
>
Create Video
- {userDB?.user?.id && !userDB?.user?.subscribed ? (
+
+
Watch
+
+ NEW
+
+
+ {/* {userDB?.user?.id && !userDB?.user?.subscribed ? (
- ) : null}
+ ) : null} */}
{pendingVideo ? (
);
@@ -234,7 +234,7 @@ const CarouselNext = React.forwardRef<
onClick={scrollNext}
{...props}
>
-
+
Next slide
);
diff --git a/src/middleware.ts b/src/middleware.ts
index ba5a911..44a3cee 100644
--- a/src/middleware.ts
+++ b/src/middleware.ts
@@ -6,11 +6,13 @@ export default authMiddleware({
"/",
"/api/create",
"/api/trpc/user.videoStatus",
+ "/api/trpc/user.getVideos",
"/api/trpc/user.user",
"/api/trpc/user.videoStatus,user.user",
"/renders/((?!_next|static|favicon.ico).*)",
"/api/webhooks/stripe",
"/api/((?!_next|static|favicon.ico).*)",
+ "/watch",
],
ignoredRoutes: ["/api/webhooks/stripe"],
});
diff --git a/src/server/api/routers/users.ts b/src/server/api/routers/users.ts
index 4d02bf2..1dd3f7f 100644
--- a/src/server/api/routers/users.ts
+++ b/src/server/api/routers/users.ts
@@ -8,7 +8,7 @@ import {
pendingVideos,
videos,
} from "@/server/db/schemas/users/schema";
-import { eq, or } from "drizzle-orm";
+import { eq, or, sql } from "drizzle-orm";
import { currentUser } from "@clerk/nextjs";
import { z } from "zod";
import OpenAI from "openai";
@@ -179,6 +179,17 @@ export const userRouter = createTRPCRouter({
return { videos: userVideosDb };
}),
+ getVideos: publicProcedure
+ .input(z.object({ page: z.number().optional() }))
+ .query(async ({ ctx, input }) => {
+ const userVideosDb = await ctx.db.query.videos.findMany({
+ limit: 5,
+ orderBy: sql`rand()`,
+ });
+
+ return { videos: userVideosDb };
+ }),
+
newUserVideo: protectedProcedure.query(async ({ ctx }) => {
const userVideosDb = await ctx.db.query.videos.findMany({
where: eq(videos.user_id, ctx.user_id),
@@ -319,6 +330,11 @@ export const userRouter = createTRPCRouter({
metadata: {
userId: ctx.user_id,
},
+ subscription_data: {
+ metadata: {
+ userId: ctx.user_id,
+ },
+ },
});
console.log("created session!");
diff --git a/src/server/db/schemas/users/schema.ts b/src/server/db/schemas/users/schema.ts
index 146d98c..4a33ed2 100644
--- a/src/server/db/schemas/users/schema.ts
+++ b/src/server/db/schemas/users/schema.ts
@@ -91,3 +91,41 @@ export const pendingVideos = mysqlTable(
userIdxVideoIdx: uniqueIndex("user_idx_video_idx").on(t.user_id, t.videoId),
}),
);
+
+export const deepaiVideos = mysqlTable(
+ "deepai_videos",
+ {
+ id: int("id").primaryKey().autoincrement(),
+ agent1: varchar("agent1", { length: 100 }).notNull(),
+ agent2: varchar("agent2", { length: 100 }).notNull(),
+ title: varchar("title", { length: 1000 }).notNull().default(""),
+ url: varchar("url", { length: 1000 }).notNull(),
+ videoId: varchar("video_id", { length: 100 }).unique().notNull(),
+ },
+ (t) => ({
+ videoIdx: uniqueIndex("video_idx").on(t.videoId),
+ }),
+);
+
+export const pendingDeepaiVideos = mysqlTable(
+ "pending_deepai_videos",
+ {
+ id: int("id").primaryKey().autoincrement(),
+ agent1: varchar("agent1", { length: 100 }).notNull(),
+ agent2: varchar("agent2", { length: 100 }).notNull(),
+ title: varchar("title", { length: 1000 }).notNull().default(""),
+ videoId: varchar("video_id", { length: 100 }).unique().notNull(),
+ url: varchar("url", { length: 1000 }).default(""),
+ timestamp: datetime("timestamp", { mode: "date" }),
+ fps: int("fps").notNull(),
+ aiGeneratedImages: boolean("ai_generated_images").notNull(),
+ background: varchar("background", { length: 100 }).notNull(),
+ music: varchar("music", { length: 100 }).notNull(),
+ processId: int("process_id").notNull().default(-1),
+ status: varchar("status", { length: 500 }).notNull(),
+ progress: int("progress").notNull().default(0),
+ },
+ (t) => ({
+ videoIdx: uniqueIndex("video_idx").on(t.videoId),
+ }),
+);