slack modal work

This commit is contained in:
Micha Albert 2024-09-03 13:57:33 +00:00
parent b062611fec
commit 492a644f56
6 changed files with 94 additions and 4 deletions

View file

@ -264,6 +264,7 @@ async def github_callback(request: Request):
},
},
{
"block_id": "session-checks",
"type": "section",
"text": {
"type": "mrkdwn",
@ -376,8 +377,35 @@ async def handle_app_home_opened_events(body, logger, event, client):
@bolt.action("submit_sessions")
async def submit_sessions(ack, body):
async def submit_sessions(ack: AsyncAck, body):
await ack()
selected_sessions_ts: List[str] = [
i["text"]["text"].split("session on ")[1]
for i in body["state"]["values"]["session-checks"]["checkboxes"][
"selected_options"
]
]
pr_id = int(
body["message"]["blocks"][1]["text"]["text"].split("#")[1].split(":")[0]
) # don't tell my mom she raised a monster
db_pr = await db.pullrequest.find_first_or_raise(where={"github_id": pr_id})
if db_pr.user_id:
stream_key = (
await db.stream.find_first_or_raise(where={"user_id": db_pr.user_id})
).key
for session in selected_sessions_ts:
await db.session.create(
{
"pull": {"connect": {"id": db_pr.id}},
"timestamp": session,
"filename": f"/home/onboard/recordings/{stream_key}/{datetime.strptime(session, '%Y-%m-%dT%H:%M:%S.%fZ').strftime('%Y-%m-%d_%H-%M-%S-%f')}.mp4",
"duration": get_recording_duration(session, stream_key),
}
)
await bolt.client.chat_delete(
channel=body["container"]["channel_id"], ts=body["message"]["ts"]
)
print(pr_id, selected_sessions_ts)
@bolt.action("deny")

View file

@ -0,0 +1,14 @@
-- CreateTable
CREATE TABLE "Session" (
"id" TEXT NOT NULL PRIMARY KEY,
"user_id" TEXT NOT NULL,
"timestamp" TEXT NOT NULL,
"filename" TEXT NOT NULL,
"duration" INTEGER NOT NULL,
"reviewed" BOOLEAN NOT NULL DEFAULT false,
"approved" BOOLEAN NOT NULL DEFAULT false,
CONSTRAINT "Session_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "User" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
);
-- CreateIndex
CREATE UNIQUE INDEX "Session_user_id_key" ON "Session"("user_id");

View file

@ -0,0 +1,26 @@
/*
Warnings:
- You are about to drop the column `user_id` on the `Session` table. All the data in the column will be lost.
- Added the required column `pr_id` to the `Session` table without a default value. This is not possible if the table is not empty.
*/
-- RedefineTables
PRAGMA defer_foreign_keys=ON;
PRAGMA foreign_keys=OFF;
CREATE TABLE "new_Session" (
"id" TEXT NOT NULL PRIMARY KEY,
"pr_id" INTEGER NOT NULL,
"timestamp" TEXT NOT NULL,
"filename" TEXT NOT NULL,
"duration" INTEGER NOT NULL,
"reviewed" BOOLEAN NOT NULL DEFAULT false,
"approved" BOOLEAN NOT NULL DEFAULT false,
CONSTRAINT "Session_pr_id_fkey" FOREIGN KEY ("pr_id") REFERENCES "PullRequest" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
);
INSERT INTO "new_Session" ("approved", "duration", "filename", "id", "reviewed", "timestamp") SELECT "approved", "duration", "filename", "id", "reviewed", "timestamp" FROM "Session";
DROP TABLE "Session";
ALTER TABLE "new_Session" RENAME TO "Session";
CREATE UNIQUE INDEX "Session_pr_id_key" ON "Session"("pr_id");
PRAGMA foreign_keys=ON;
PRAGMA defer_foreign_keys=OFF;

View file

@ -0,0 +1,2 @@
-- DropIndex
DROP INDEX "Session_pr_id_key";

View file

@ -0,0 +1,8 @@
/*
Warnings:
- A unique constraint covering the columns `[filename]` on the table `Session` will be added. If there are existing duplicate values, this will fail.
*/
-- CreateIndex
CREATE UNIQUE INDEX "Session_filename_key" ON "Session"("filename");

View file

@ -34,4 +34,16 @@ model PullRequest {
user_id String?
gh_user_id Int
user User? @relation("PullRequestToUser", fields: [user_id], references: [id])
sessions Session[]
}
model Session {
id String @id @default(cuid())
pr_id Int
pull PullRequest @relation(fields: [pr_id], references: [id])
timestamp String
filename String @unique
duration Int // in minutes
reviewed Boolean @default(false)
approved Boolean @default(false)
}