shubhjn commited on
Commit
1b278bb
·
1 Parent(s): 8cda3e5
Files changed (1) hide show
  1. app/api/workspace/route.js +0 -123
app/api/workspace/route.js DELETED
@@ -1,123 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.GET = GET;
13
- exports.POST = POST;
14
- const server_1 = require("next/server");
15
- const manager_1 = require("@/lib/docker/manager");
16
- const auth_1 = require("@/auth");
17
- const db_1 = require("@/lib/db");
18
- function GET(req) {
19
- return __awaiter(this, void 0, void 0, function* () {
20
- var _a;
21
- const session = yield (0, auth_1.auth)();
22
- if (!((_a = session === null || session === void 0 ? void 0 : session.user) === null || _a === void 0 ? void 0 : _a.id)) {
23
- return server_1.NextResponse.json({ error: "Unauthorized" }, { status: 401 });
24
- }
25
- const { searchParams } = new URL(req.url);
26
- const action = searchParams.get("action");
27
- if (action === "statusAll") {
28
- try {
29
- // Fetch all workspaces for user and return their statuses
30
- const res = yield db_1.db.execute({
31
- sql: "SELECT id, status FROM workspaces WHERE user_id = ?",
32
- args: [session.user.id]
33
- });
34
- const statuses = {};
35
- res.rows.forEach(row => {
36
- statuses[row.id] = row.status;
37
- });
38
- return server_1.NextResponse.json({ statuses });
39
- }
40
- catch (e) {
41
- console.error("[WORKSPACE_API_ERROR]", e);
42
- return server_1.NextResponse.json({ error: e.message }, { status: 500 });
43
- }
44
- }
45
- return server_1.NextResponse.json({ error: "Invalid action" }, { status: 400 });
46
- });
47
- }
48
- function POST(req) {
49
- return __awaiter(this, void 0, void 0, function* () {
50
- var _a;
51
- const session = yield (0, auth_1.auth)();
52
- if (!((_a = session === null || session === void 0 ? void 0 : session.user) === null || _a === void 0 ? void 0 : _a.id)) {
53
- return server_1.NextResponse.json({ error: "Unauthorized" }, { status: 401 });
54
- }
55
- try {
56
- const body = yield req.json();
57
- const { action, id, image } = body;
58
- if (!id) {
59
- return server_1.NextResponse.json({ error: "Missing workspace id" }, { status: 400 });
60
- }
61
- // Verify ownership and get project name
62
- const verifyObj = yield db_1.db.execute({
63
- sql: "SELECT id, project_name FROM workspaces WHERE id = ? AND user_id = ?",
64
- args: [id, session.user.id]
65
- });
66
- if (verifyObj.rows.length === 0) {
67
- return server_1.NextResponse.json({ error: "Workspace not found or unauthorized" }, { status: 404 });
68
- }
69
- const projectName = verifyObj.rows[0].project_name;
70
- if (action === "start") {
71
- const { withAndroidEmulator } = body;
72
- const result = yield (0, manager_1.startWorkspaceContainer)({
73
- id,
74
- userId: session.user.id,
75
- projectName,
76
- image,
77
- withAndroidEmulator
78
- });
79
- if (result.success) {
80
- yield db_1.db.execute({
81
- sql: "UPDATE workspaces SET status = 'running', container_id = ?, android_container_id = ?, android_port = ? WHERE id = ?",
82
- args: [result.containerId || null, result.androidContainerId || null, result.androidPort || null, id]
83
- });
84
- }
85
- return server_1.NextResponse.json(result);
86
- }
87
- else if (action === "stop") {
88
- const result = yield (0, manager_1.stopWorkspaceContainer)(id);
89
- if (result.success) {
90
- yield db_1.db.execute({
91
- sql: "UPDATE workspaces SET status = 'stopped' WHERE id = ?",
92
- args: [id]
93
- });
94
- }
95
- return server_1.NextResponse.json(result);
96
- }
97
- else if (action === "rebuild") {
98
- const { withAndroidEmulator } = body;
99
- // 1. Fully destroy existing containers
100
- yield (0, manager_1.stopWorkspaceContainer)(id);
101
- // 2. Recreate them (this will pick up codeverse.json changes)
102
- const result = yield (0, manager_1.startWorkspaceContainer)({
103
- id,
104
- userId: session.user.id,
105
- projectName,
106
- image,
107
- withAndroidEmulator
108
- });
109
- if (result.success) {
110
- yield db_1.db.execute({
111
- sql: "UPDATE workspaces SET status = 'running', container_id = ?, android_container_id = ?, android_port = ? WHERE id = ?",
112
- args: [result.containerId || null, result.androidContainerId || null, result.androidPort || null, id]
113
- });
114
- }
115
- return server_1.NextResponse.json(result);
116
- }
117
- return server_1.NextResponse.json({ error: "Invalid action" }, { status: 400 });
118
- }
119
- catch (e) {
120
- return server_1.NextResponse.json({ error: e.message }, { status: 500 });
121
- }
122
- });
123
- }