mirror of
https://github.com/R0m1k3/Socialflow.git
synced 2026-10-11 17:26:45 +02:00
Add user permissions for managing social media pages
Introduces the `user_page_permissions` table to manage user access to social media pages, updates relations for `users` and `social_pages`, and defines new schema types for `UserPagePermission`. 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/u2SCNAb
This commit is contained in:
1 parent
8067e4fab4
commit
7726f6063d
2 files changed
+32
No files matched your search
@@ -101,12 +101,20 @@ export const aiGenerations = pgTable("ai_generations", {
|
||||
createdAt: timestamp("created_at").defaultNow(),
|
||||
});
|
||||
|
||||
export const userPagePermissions = pgTable("user_page_permissions", {
|
||||
id: varchar("id").primaryKey().default(sql`gen_random_uuid()`),
|
||||
userId: varchar("user_id").notNull().references(() => users.id, { onDelete: "cascade" }),
|
||||
pageId: varchar("page_id").notNull().references(() => socialPages.id, { onDelete: "cascade" }),
|
||||
createdAt: timestamp("created_at").defaultNow(),
|
||||
});
|
||||
|
||||
// Relations
|
||||
export const usersRelations = relations(users, ({ many, one }) => ({
|
||||
socialPages: many(socialPages),
|
||||
media: many(media),
|
||||
posts: many(posts),
|
||||
aiGenerations: many(aiGenerations),
|
||||
pagePermissions: many(userPagePermissions),
|
||||
cloudinaryConfig: one(cloudinaryConfig),
|
||||
openrouterConfig: one(openrouterConfig),
|
||||
}));
|
||||
@@ -131,6 +139,7 @@ export const socialPagesRelations = relations(socialPages, ({ one, many }) => ({
|
||||
references: [users.id],
|
||||
}),
|
||||
scheduledPosts: many(scheduledPosts),
|
||||
userPermissions: many(userPagePermissions),
|
||||
}));
|
||||
|
||||
export const mediaRelations = relations(media, ({ one, many }) => ({
|
||||
@@ -179,6 +188,17 @@ export const aiGenerationsRelations = relations(aiGenerations, ({ one }) => ({
|
||||
}),
|
||||
}));
|
||||
|
||||
export const userPagePermissionsRelations = relations(userPagePermissions, ({ one }) => ({
|
||||
user: one(users, {
|
||||
fields: [userPagePermissions.userId],
|
||||
references: [users.id],
|
||||
}),
|
||||
page: one(socialPages, {
|
||||
fields: [userPagePermissions.pageId],
|
||||
references: [socialPages.id],
|
||||
}),
|
||||
}));
|
||||
|
||||
// Insert schemas
|
||||
export const insertUserSchema = createInsertSchema(users).pick({
|
||||
username: true,
|
||||
@@ -235,6 +255,11 @@ export const updateCloudinaryConfigSchema = insertCloudinaryConfigSchema.partial
|
||||
apiSecret: true,
|
||||
});
|
||||
|
||||
export const insertUserPagePermissionSchema = createInsertSchema(userPagePermissions).omit({
|
||||
id: true,
|
||||
createdAt: true,
|
||||
});
|
||||
|
||||
// Types
|
||||
export type User = typeof users.$inferSelect;
|
||||
export type InsertUser = z.infer<typeof insertUserSchema>;
|
||||
@@ -263,3 +288,6 @@ export type InsertOpenrouterConfig = z.infer<typeof insertOpenrouterConfigSchema
|
||||
export type UpdateOpenrouterConfig = z.infer<typeof updateOpenrouterConfigSchema>;
|
||||
|
||||
export type PostMedia = typeof postMedia.$inferSelect;
|
||||
|
||||
export type UserPagePermission = typeof userPagePermissions.$inferSelect;
|
||||
export type InsertUserPagePermission = z.infer<typeof insertUserPagePermissionSchema>;
|
||||
Reference in new issue
Block a user