mirror of
https://github.com/R0m1k3/Socialflow.git
synced 2026-10-11 17:26:45 +02:00
Add Cloudinary configuration to store media assets
Add a new `cloudinary_config` table to store Cloudinary credentials, update `users` and `cloudinaryConfig` relations, and create corresponding Zod schemas for Cloudinary configuration. Replit-Commit-Author: Agent Replit-Commit-Session-Id: ae4037a0-2a6f-4530-9bac-79b543286bda Replit-Commit-Checkpoint-Type: intermediate_checkpoint Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/397bca8c-984f-43ff-841a-10897aeb8140/ae4037a0-2a6f-4530-9bac-79b543286bda/vhNnBGJ
This commit is contained in:
1 parent
03f16825dd
commit
66e20a83e7
1 file changed
+29
-1
+29
-1
@@ -27,10 +27,21 @@ export const socialPages = pgTable("social_pages", {
|
||||
createdAt: timestamp("created_at").defaultNow(),
|
||||
});
|
||||
|
||||
export const cloudinaryConfig = pgTable("cloudinary_config", {
|
||||
id: varchar("id").primaryKey().default(sql`gen_random_uuid()`),
|
||||
userId: varchar("user_id").notNull().unique().references(() => users.id, { onDelete: "cascade" }),
|
||||
cloudName: text("cloud_name").notNull(),
|
||||
apiKey: text("api_key").notNull(),
|
||||
apiSecret: text("api_secret").notNull(),
|
||||
createdAt: timestamp("created_at").defaultNow(),
|
||||
updatedAt: timestamp("updated_at").defaultNow(),
|
||||
});
|
||||
|
||||
export const media = pgTable("media", {
|
||||
id: varchar("id").primaryKey().default(sql`gen_random_uuid()`),
|
||||
userId: varchar("user_id").notNull().references(() => users.id, { onDelete: "cascade" }),
|
||||
type: mediaTypeEnum("type").notNull(),
|
||||
cloudinaryPublicId: text("cloudinary_public_id"),
|
||||
originalUrl: text("original_url").notNull(),
|
||||
facebookFeedUrl: text("facebook_feed_url"),
|
||||
instagramFeedUrl: text("instagram_feed_url"),
|
||||
@@ -79,11 +90,19 @@ export const aiGenerations = pgTable("ai_generations", {
|
||||
});
|
||||
|
||||
// Relations
|
||||
export const usersRelations = relations(users, ({ many }) => ({
|
||||
export const usersRelations = relations(users, ({ many, one }) => ({
|
||||
socialPages: many(socialPages),
|
||||
media: many(media),
|
||||
posts: many(posts),
|
||||
aiGenerations: many(aiGenerations),
|
||||
cloudinaryConfig: one(cloudinaryConfig),
|
||||
}));
|
||||
|
||||
export const cloudinaryConfigRelations = relations(cloudinaryConfig, ({ one }) => ({
|
||||
user: one(users, {
|
||||
fields: [cloudinaryConfig.userId],
|
||||
references: [users.id],
|
||||
}),
|
||||
}));
|
||||
|
||||
export const socialPagesRelations = relations(socialPages, ({ one, many }) => ({
|
||||
@@ -174,6 +193,12 @@ export const insertAiGenerationSchema = createInsertSchema(aiGenerations).omit({
|
||||
createdAt: true,
|
||||
});
|
||||
|
||||
export const insertCloudinaryConfigSchema = createInsertSchema(cloudinaryConfig).omit({
|
||||
id: true,
|
||||
createdAt: true,
|
||||
updatedAt: true,
|
||||
});
|
||||
|
||||
// Types
|
||||
export type User = typeof users.$inferSelect;
|
||||
export type InsertUser = z.infer<typeof insertUserSchema>;
|
||||
@@ -192,3 +217,6 @@ export type InsertScheduledPost = z.infer<typeof insertScheduledPostSchema>;
|
||||
|
||||
export type AiGeneration = typeof aiGenerations.$inferSelect;
|
||||
export type InsertAiGeneration = z.infer<typeof insertAiGenerationSchema>;
|
||||
|
||||
export type CloudinaryConfig = typeof cloudinaryConfig.$inferSelect;
|
||||
export type InsertCloudinaryConfig = z.infer<typeof insertCloudinaryConfigSchema>;
|
||||
Reference in new issue
Block a user