mirror of
https://github.com/Significant-Gravitas/AutoGPT.git
synced 2026-04-08 03:00:28 -04:00
Updated Schema to include user groups
This commit is contained in:
@@ -1,6 +1,12 @@
|
||||
-- CreateEnum
|
||||
CREATE TYPE "UserGroupRole" AS ENUM ('MEMBER', 'OWNER');
|
||||
|
||||
-- CreateEnum
|
||||
CREATE TYPE "SubmissionStatus" AS ENUM ('DAFT', 'PENDING', 'APPROVED', 'REJECTED');
|
||||
|
||||
-- AlterTable
|
||||
ALTER TABLE "AgentGraph" ADD COLUMN "groupId" TEXT;
|
||||
|
||||
-- AlterTable
|
||||
ALTER TABLE "AgentGraphExecution" ADD COLUMN "agentPresetId" TEXT;
|
||||
|
||||
@@ -16,6 +22,30 @@ ALTER TABLE "AnalyticsDetails" ALTER COLUMN "id" DROP DEFAULT;
|
||||
-- AlterTable
|
||||
ALTER TABLE "AnalyticsMetrics" ALTER COLUMN "id" DROP DEFAULT;
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "UserGroup" (
|
||||
"id" TEXT NOT NULL,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"name" TEXT NOT NULL,
|
||||
"description" TEXT NOT NULL,
|
||||
"groupIconUrl" TEXT,
|
||||
|
||||
CONSTRAINT "UserGroup_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "UserGroupMembership" (
|
||||
"id" TEXT NOT NULL,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"userId" TEXT NOT NULL,
|
||||
"userGroupId" TEXT NOT NULL,
|
||||
"Role" "UserGroupRole" NOT NULL DEFAULT 'MEMBER',
|
||||
|
||||
CONSTRAINT "UserGroupMembership_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "AgentPreset" (
|
||||
"id" TEXT NOT NULL,
|
||||
@@ -54,6 +84,7 @@ CREATE TABLE "Profile" (
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"userId" TEXT,
|
||||
"groupId" TEXT,
|
||||
"username" TEXT NOT NULL,
|
||||
"description" TEXT NOT NULL,
|
||||
"links" TEXT[],
|
||||
@@ -72,6 +103,7 @@ CREATE TABLE "StoreListing" (
|
||||
"agentId" TEXT NOT NULL,
|
||||
"agentVersion" INTEGER NOT NULL,
|
||||
"owningUserId" TEXT NOT NULL,
|
||||
"owningGroupId" TEXT,
|
||||
|
||||
CONSTRAINT "StoreListing_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
@@ -126,6 +158,18 @@ CREATE TABLE "StoreListingSubmission" (
|
||||
CONSTRAINT "StoreListingSubmission_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "UserGroup_name_idx" ON "UserGroup"("name");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "UserGroupMembership_userId_idx" ON "UserGroupMembership"("userId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "UserGroupMembership_userGroupId_idx" ON "UserGroupMembership"("userGroupId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "UserGroupMembership_userId_userGroupId_key" ON "UserGroupMembership"("userId", "userGroupId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "AgentPreset_userId_idx" ON "AgentPreset"("userId");
|
||||
|
||||
@@ -159,6 +203,15 @@ CREATE INDEX "StoreListingSubmission_storeListingId_idx" ON "StoreListingSubmiss
|
||||
-- CreateIndex
|
||||
CREATE INDEX "StoreListingSubmission_Status_idx" ON "StoreListingSubmission"("Status");
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "UserGroupMembership" ADD CONSTRAINT "UserGroupMembership_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "UserGroupMembership" ADD CONSTRAINT "UserGroupMembership_userGroupId_fkey" FOREIGN KEY ("userGroupId") REFERENCES "UserGroup"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "AgentGraph" ADD CONSTRAINT "AgentGraph_groupId_fkey" FOREIGN KEY ("groupId") REFERENCES "UserGroup"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "AgentPreset" ADD CONSTRAINT "AgentPreset_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
@@ -186,12 +239,18 @@ ALTER TABLE "AgentGraphExecutionSchedule" ADD CONSTRAINT "AgentGraphExecutionSch
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "Profile" ADD CONSTRAINT "Profile_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "Profile" ADD CONSTRAINT "Profile_groupId_fkey" FOREIGN KEY ("groupId") REFERENCES "UserGroup"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "StoreListing" ADD CONSTRAINT "StoreListing_agentId_agentVersion_fkey" FOREIGN KEY ("agentId", "agentVersion") REFERENCES "AgentGraph"("id", "version") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "StoreListing" ADD CONSTRAINT "StoreListing_owningUserId_fkey" FOREIGN KEY ("owningUserId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "StoreListing" ADD CONSTRAINT "StoreListing_owningGroupId_fkey" FOREIGN KEY ("owningGroupId") REFERENCES "UserGroup"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "StoreListingVersion" ADD CONSTRAINT "StoreListingVersion_agentId_agentVersion_fkey" FOREIGN KEY ("agentId", "agentVersion") REFERENCES "AgentGraph"("id", "version") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
@@ -27,17 +27,60 @@ model User {
|
||||
AnalyticsDetails AnalyticsDetails[]
|
||||
AnalyticsMetrics AnalyticsMetrics[]
|
||||
UserBlockCredit UserBlockCredit[]
|
||||
AgentPreset AgentPreset[]
|
||||
UserAgent UserAgent[]
|
||||
Profile Profile[]
|
||||
StoreListing StoreListing[]
|
||||
StoreListingReview StoreListingReview[]
|
||||
StoreListingSubmission StoreListingSubmission[]
|
||||
|
||||
AgentPreset AgentPreset[]
|
||||
UserAgent UserAgent[]
|
||||
|
||||
UserGroupMemberships UserGroupMembership[]
|
||||
Profile Profile[]
|
||||
StoreListing StoreListing[]
|
||||
StoreListingReview StoreListingReview[]
|
||||
StoreListingSubmission StoreListingSubmission[]
|
||||
|
||||
@@index([id])
|
||||
@@index([email])
|
||||
}
|
||||
|
||||
model UserGroup {
|
||||
id String @id @default(uuid())
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @default(now()) @updatedAt
|
||||
|
||||
name String
|
||||
description String
|
||||
groupIconUrl String?
|
||||
|
||||
UserGroupMemberships UserGroupMembership[]
|
||||
|
||||
Agents AgentGraph[]
|
||||
Profile Profile[]
|
||||
StoreListing StoreListing[]
|
||||
|
||||
@@index([name])
|
||||
}
|
||||
|
||||
enum UserGroupRole {
|
||||
MEMBER
|
||||
OWNER
|
||||
}
|
||||
|
||||
model UserGroupMembership {
|
||||
id String @id @default(uuid())
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @default(now()) @updatedAt
|
||||
|
||||
userId String
|
||||
User User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
||||
|
||||
userGroupId String
|
||||
UserGroup UserGroup @relation(fields: [userGroupId], references: [id], onDelete: Cascade)
|
||||
Role UserGroupRole @default(MEMBER)
|
||||
|
||||
@@unique([userId, userGroupId])
|
||||
@@index([userId])
|
||||
@@index([userGroupId])
|
||||
}
|
||||
|
||||
// This model describes the Agent Graph/Flow (Multi Agent System).
|
||||
model AgentGraph {
|
||||
id String @default(uuid())
|
||||
@@ -52,8 +95,15 @@ model AgentGraph {
|
||||
|
||||
// Link to User model
|
||||
userId String
|
||||
// FIX: Do not cascade delete the agent when the user is deleted
|
||||
// This allows us to delete user data with deleting the agent which maybe in use by other users
|
||||
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
||||
|
||||
groupId String?
|
||||
// Do not cascade delete the agent when the group is deleted
|
||||
// This allows us to delete user group data with deleting the agent which maybe in use by other users
|
||||
Group UserGroup? @relation(fields: [groupId], references: [id], onDelete: SetNull)
|
||||
|
||||
AgentNodes AgentNode[]
|
||||
AgentGraphExecution AgentGraphExecution[]
|
||||
AgentGraphExecutionSchedule AgentGraphExecutionSchedule[]
|
||||
@@ -326,6 +376,11 @@ model AnalyticsDetails {
|
||||
@@index([type])
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////
|
||||
////////////// METRICS TRACKING TABLES ////////////////
|
||||
////////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////
|
||||
model AnalyticsMetrics {
|
||||
id String @id @default(uuid())
|
||||
createdAt DateTime @default(now())
|
||||
@@ -349,6 +404,11 @@ enum UserBlockCreditType {
|
||||
USAGE
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////
|
||||
//////// ACCOUNTING AND CREDIT SYSTEM TABLES //////////
|
||||
////////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////
|
||||
model UserBlockCredit {
|
||||
transactionKey String @default(uuid())
|
||||
createdAt DateTime @default(now())
|
||||
@@ -384,6 +444,10 @@ model Profile {
|
||||
userId String?
|
||||
User User? @relation(fields: [userId], references: [id], onDelete: Cascade)
|
||||
|
||||
// The group this profile belongs to, if any.
|
||||
groupId String?
|
||||
Group UserGroup? @relation(fields: [groupId], references: [id])
|
||||
|
||||
username String @unique
|
||||
description String
|
||||
|
||||
@@ -411,6 +475,9 @@ model StoreListing {
|
||||
owningUserId String
|
||||
OwningUser User @relation(fields: [owningUserId], references: [id])
|
||||
|
||||
owningGroupId String?
|
||||
OwningGroup UserGroup? @relation(fields: [owningGroupId], references: [id])
|
||||
|
||||
StoreListingVersions StoreListingVersion[]
|
||||
StoreListingSubmission StoreListingSubmission[]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user