upd
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
PORT=3001
|
PORT=3001
|
||||||
DB_URL=postgres://postgres:v1sq3vD5faXL@194.26.138.94:5432/mate
|
DB_URL=postgres://postgres:v1sq3vD5faXL@194.26.138.94:5432/mate
|
||||||
HMAC_SECRET=9a9ccda5db157ccfd04b4094264c55f58097f85d1fd6c22fbab0a86680dd3efd
|
HMAC_SECRET=9a9ccda5db157ccfd04b4094264c55f58097f85d1fd6c22fbab0a86680dd3efd
|
||||||
API_URL=http://192.168.1.170:3000
|
API_URL=http://192.168.1.122:3000
|
||||||
COMPANY_ID=2a4f54db-7a1f-42c2-a965-3b185d92b063
|
COMPANY_ID=2a4f54db-7a1f-42c2-a965-3b185d92b063
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ yarn-debug.log*
|
|||||||
yarn-error.log*
|
yarn-error.log*
|
||||||
|
|
||||||
# local env files
|
# local env files
|
||||||
|
.env
|
||||||
.env.local
|
.env.local
|
||||||
.env.development.local
|
.env.development.local
|
||||||
.env.test.local
|
.env.test.local
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/node-cron": "^3.0.11",
|
"@types/node-cron": "^3.0.11",
|
||||||
"cron": "^4.1.0",
|
"cron": "^4.1.0",
|
||||||
|
"date-fns": "^4.1.0",
|
||||||
"drizzle-orm": "^0.40.0",
|
"drizzle-orm": "^0.40.0",
|
||||||
"got": "^14.4.6",
|
"got": "^14.4.6",
|
||||||
"jose": "^6.0.10",
|
"jose": "^6.0.10",
|
||||||
@@ -110,6 +111,8 @@
|
|||||||
|
|
||||||
"cron": ["cron@4.1.0", "", { "dependencies": { "@types/luxon": "~3.4.0", "luxon": "~3.5.0" } }, "sha512-wmcuXr2qP0UZStYgwruG6jC2AYSO9n5VMm2t93hmcEXEjWY3S2bsXe3sfGUrTs/uQ1AvRCrZ0Pp9Q032L/V9tw=="],
|
"cron": ["cron@4.1.0", "", { "dependencies": { "@types/luxon": "~3.4.0", "luxon": "~3.5.0" } }, "sha512-wmcuXr2qP0UZStYgwruG6jC2AYSO9n5VMm2t93hmcEXEjWY3S2bsXe3sfGUrTs/uQ1AvRCrZ0Pp9Q032L/V9tw=="],
|
||||||
|
|
||||||
|
"date-fns": ["date-fns@4.1.0", "", {}, "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg=="],
|
||||||
|
|
||||||
"debug": ["debug@4.4.0", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA=="],
|
"debug": ["debug@4.4.0", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA=="],
|
||||||
|
|
||||||
"decompress-response": ["decompress-response@6.0.0", "", { "dependencies": { "mimic-response": "^3.1.0" } }, "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ=="],
|
"decompress-response": ["decompress-response@6.0.0", "", { "dependencies": { "mimic-response": "^3.1.0" } }, "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ=="],
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/node-cron": "^3.0.11",
|
"@types/node-cron": "^3.0.11",
|
||||||
"cron": "^4.1.0",
|
"cron": "^4.1.0",
|
||||||
|
"date-fns": "^4.1.0",
|
||||||
"drizzle-orm": "^0.40.0",
|
"drizzle-orm": "^0.40.0",
|
||||||
"got": "^14.4.6",
|
"got": "^14.4.6",
|
||||||
"jose": "^6.0.10",
|
"jose": "^6.0.10",
|
||||||
|
|||||||
@@ -1,25 +0,0 @@
|
|||||||
import { pgTable, timestamp, uuid, varchar } from "drizzle-orm/pg-core";
|
|
||||||
import { serversTable } from "./servers";
|
|
||||||
import { relations } from "drizzle-orm";
|
|
||||||
|
|
||||||
export const actionsTable = pgTable("actions", {
|
|
||||||
id: uuid("id").defaultRandom().primaryKey(),
|
|
||||||
name: varchar("name").notNull(),
|
|
||||||
serverId: uuid("server_id")
|
|
||||||
.notNull()
|
|
||||||
.references(() => serversTable.id),
|
|
||||||
createdAt: timestamp("created_at", { withTimezone: true })
|
|
||||||
.notNull()
|
|
||||||
.defaultNow(),
|
|
||||||
updatedAt: timestamp("updated_at", { withTimezone: true })
|
|
||||||
.notNull()
|
|
||||||
.defaultNow()
|
|
||||||
.$onUpdate(() => new Date()),
|
|
||||||
});
|
|
||||||
|
|
||||||
export const actionsRelations = relations(actionsTable, ({ one }) => ({
|
|
||||||
server: one(serversTable, {
|
|
||||||
fields: [actionsTable.serverId],
|
|
||||||
references: [serversTable.id],
|
|
||||||
}),
|
|
||||||
}));
|
|
||||||
+39
-16
@@ -1,26 +1,49 @@
|
|||||||
import { pgTable, timestamp, uuid, varchar } from "drizzle-orm/pg-core";
|
import {
|
||||||
|
pgTable,
|
||||||
|
timestamp,
|
||||||
|
uniqueIndex,
|
||||||
|
uuid,
|
||||||
|
varchar,
|
||||||
|
} from "drizzle-orm/pg-core";
|
||||||
import { companiesTable } from "./companies";
|
import { companiesTable } from "./companies";
|
||||||
import { relations } from "drizzle-orm";
|
import { relations } from "drizzle-orm";
|
||||||
|
import { serversTable } from "./servers";
|
||||||
|
|
||||||
export const appsTable = pgTable("apps", {
|
export const appsTable = pgTable(
|
||||||
id: uuid("id").defaultRandom().primaryKey(),
|
"apps",
|
||||||
name: varchar("name").notNull(),
|
{
|
||||||
fileName: varchar("filename").notNull(),
|
id: uuid("id").defaultRandom().primaryKey(),
|
||||||
companyId: uuid("company_id")
|
name: varchar("name").notNull(),
|
||||||
.notNull()
|
fileName: varchar("filename").notNull(),
|
||||||
.references(() => companiesTable.id),
|
serverId: uuid("server_id")
|
||||||
createdAt: timestamp("created_at", { withTimezone: true })
|
.notNull()
|
||||||
.notNull()
|
.references(() => serversTable.id, { onDelete: "cascade" }),
|
||||||
.defaultNow(),
|
companyId: uuid("company_id")
|
||||||
updatedAt: timestamp("updated_at", { withTimezone: true })
|
.notNull()
|
||||||
.notNull()
|
.references(() => companiesTable.id, { onDelete: "cascade" }),
|
||||||
.defaultNow()
|
createdAt: timestamp("created_at", { withTimezone: true })
|
||||||
.$onUpdate(() => new Date()),
|
.notNull()
|
||||||
});
|
.defaultNow(),
|
||||||
|
updatedAt: timestamp("updated_at", { withTimezone: true })
|
||||||
|
.notNull()
|
||||||
|
.defaultNow()
|
||||||
|
.$onUpdate(() => new Date()),
|
||||||
|
},
|
||||||
|
(table) => ({
|
||||||
|
uniqueFileNameServerId: uniqueIndex("unique_file_name_server_id").on(
|
||||||
|
table.fileName,
|
||||||
|
table.serverId
|
||||||
|
),
|
||||||
|
})
|
||||||
|
);
|
||||||
|
|
||||||
export const appsRelations = relations(appsTable, ({ one }) => ({
|
export const appsRelations = relations(appsTable, ({ one }) => ({
|
||||||
company: one(companiesTable, {
|
company: one(companiesTable, {
|
||||||
fields: [appsTable.companyId],
|
fields: [appsTable.companyId],
|
||||||
references: [companiesTable.id],
|
references: [companiesTable.id],
|
||||||
}),
|
}),
|
||||||
|
server: one(serversTable, {
|
||||||
|
fields: [appsTable.serverId],
|
||||||
|
references: [serversTable.id],
|
||||||
|
}),
|
||||||
}));
|
}));
|
||||||
|
|||||||
@@ -11,10 +11,10 @@ export const clientsTable = pgTable("clients", {
|
|||||||
email: varchar("email"),
|
email: varchar("email"),
|
||||||
ownerId: uuid("owner_id")
|
ownerId: uuid("owner_id")
|
||||||
.notNull()
|
.notNull()
|
||||||
.references(() => usersTable.id),
|
.references(() => usersTable.id, { onDelete: "cascade" }),
|
||||||
companyId: uuid("company_id")
|
companyId: uuid("company_id")
|
||||||
.notNull()
|
.notNull()
|
||||||
.references(() => companiesTable.id),
|
.references(() => companiesTable.id, { onDelete: "cascade" }),
|
||||||
createdAt: timestamp("created_at", { withTimezone: true })
|
createdAt: timestamp("created_at", { withTimezone: true })
|
||||||
.notNull()
|
.notNull()
|
||||||
.defaultNow(),
|
.defaultNow(),
|
||||||
|
|||||||
@@ -1,19 +1,19 @@
|
|||||||
import { pgTable, serial, text, timestamp, uuid } from "drizzle-orm/pg-core";
|
import { pgTable, text, timestamp, uuid } from "drizzle-orm/pg-core";
|
||||||
import { usersTable } from "./users";
|
import { usersTable } from "./users";
|
||||||
import { sessionsTable } from "./sessions";
|
import { sessionsTable } from "./sessions";
|
||||||
import { relations } from "drizzle-orm";
|
import { relations } from "drizzle-orm";
|
||||||
|
|
||||||
export const commentsTable = pgTable("comments", {
|
export const commentsTable = pgTable("comments", {
|
||||||
id: serial("id").primaryKey(),
|
id: uuid("id").defaultRandom().primaryKey(),
|
||||||
text: text("text").notNull(),
|
text: text("text").notNull(),
|
||||||
createdAt: timestamp("created_at").notNull().defaultNow(),
|
createdAt: timestamp("created_at").notNull().defaultNow(),
|
||||||
updatedAt: timestamp("updated_at").notNull().defaultNow(),
|
updatedAt: timestamp("updated_at").notNull().defaultNow(),
|
||||||
ownerId: uuid("owner_id")
|
ownerId: uuid("owner_id")
|
||||||
.notNull()
|
.notNull()
|
||||||
.references(() => usersTable.id),
|
.references(() => usersTable.id, { onDelete: "cascade" }),
|
||||||
sessionId: uuid("session_id")
|
sessionId: uuid("session_id")
|
||||||
.notNull()
|
.notNull()
|
||||||
.references(() => sessionsTable.id),
|
.references(() => sessionsTable.id, { onDelete: "cascade" }),
|
||||||
});
|
});
|
||||||
|
|
||||||
export const commentsRelations = relations(commentsTable, ({ one }) => ({
|
export const commentsRelations = relations(commentsTable, ({ one }) => ({
|
||||||
|
|||||||
@@ -20,5 +20,4 @@ export const companiesRelations = relations(companiesTable, ({ many }) => ({
|
|||||||
users: many(usersTable),
|
users: many(usersTable),
|
||||||
servers: many(serversTable),
|
servers: many(serversTable),
|
||||||
apps: many(appsTable),
|
apps: many(appsTable),
|
||||||
// actions: many(actionsTable),
|
|
||||||
}));
|
}));
|
||||||
|
|||||||
@@ -5,5 +5,4 @@ export * from "./servers";
|
|||||||
export * from "./sessions";
|
export * from "./sessions";
|
||||||
export * from "./clients";
|
export * from "./clients";
|
||||||
export * from "./apps";
|
export * from "./apps";
|
||||||
export * from "./actions";
|
|
||||||
export * from "./comments";
|
export * from "./comments";
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { pgTable, timestamp, uuid, varchar } from "drizzle-orm/pg-core";
|
import { pgTable, timestamp, uuid, varchar, inet } from "drizzle-orm/pg-core";
|
||||||
import { companiesTable } from "./companies";
|
import { companiesTable } from "./companies";
|
||||||
import { relations } from "drizzle-orm";
|
import { relations } from "drizzle-orm";
|
||||||
import { sessionsTable } from "./sessions";
|
import { sessionsTable } from "./sessions";
|
||||||
@@ -6,12 +6,14 @@ import { appsTable } from "./apps";
|
|||||||
|
|
||||||
export const serversTable = pgTable("servers", {
|
export const serversTable = pgTable("servers", {
|
||||||
id: uuid("id").primaryKey().defaultRandom(),
|
id: uuid("id").primaryKey().defaultRandom(),
|
||||||
hostname: varchar("hostname", { length: 15 }).unique().notNull(),
|
hostname: varchar("hostname", { length: 15 }).notNull(),
|
||||||
name: varchar("name").notNull(),
|
name: varchar("name").notNull().default("Новый стол"),
|
||||||
location: varchar("location").notNull(),
|
description: varchar("description").notNull(),
|
||||||
companyId: uuid("company_id")
|
companyId: uuid("company_id")
|
||||||
.notNull()
|
.notNull()
|
||||||
.references(() => companiesTable.id),
|
.references(() => companiesTable.id, {
|
||||||
|
onDelete: "cascade",
|
||||||
|
}),
|
||||||
createdAt: timestamp("created_at", { withTimezone: true })
|
createdAt: timestamp("created_at", { withTimezone: true })
|
||||||
.notNull()
|
.notNull()
|
||||||
.defaultNow(),
|
.defaultNow(),
|
||||||
@@ -19,9 +21,8 @@ export const serversTable = pgTable("servers", {
|
|||||||
.notNull()
|
.notNull()
|
||||||
.defaultNow()
|
.defaultNow()
|
||||||
.$onUpdate(() => new Date()),
|
.$onUpdate(() => new Date()),
|
||||||
status: varchar("status", { enum: ["online", "offline"] })
|
status: varchar("status", { enum: ["online", "offline"] }).default("online"),
|
||||||
.notNull()
|
ipAddress: inet("ip_address"),
|
||||||
.default("online"),
|
|
||||||
});
|
});
|
||||||
|
|
||||||
export const serversRelations = relations(serversTable, ({ one, many }) => ({
|
export const serversRelations = relations(serversTable, ({ one, many }) => ({
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import { serversTable } from "./servers";
|
|||||||
import { clientsTable } from "./clients";
|
import { clientsTable } from "./clients";
|
||||||
import { appsTable } from "./apps";
|
import { appsTable } from "./apps";
|
||||||
import { sql } from "drizzle-orm";
|
import { sql } from "drizzle-orm";
|
||||||
|
import { commentsTable } from "./comments";
|
||||||
|
|
||||||
export const sessionsTable = pgTable(
|
export const sessionsTable = pgTable(
|
||||||
"sessions",
|
"sessions",
|
||||||
@@ -26,19 +27,19 @@ export const sessionsTable = pgTable(
|
|||||||
pid: integer("pid"),
|
pid: integer("pid"),
|
||||||
appId: uuid("app_id")
|
appId: uuid("app_id")
|
||||||
.notNull()
|
.notNull()
|
||||||
.references(() => appsTable.id),
|
.references(() => appsTable.id, { onDelete: "cascade" }),
|
||||||
ownerId: uuid("owner_id")
|
ownerId: uuid("owner_id")
|
||||||
.notNull()
|
.notNull()
|
||||||
.references(() => usersTable.id),
|
.references(() => usersTable.id, { onDelete: "cascade" }),
|
||||||
serverId: uuid("server_id")
|
serverId: uuid("server_id")
|
||||||
.notNull()
|
.notNull()
|
||||||
.references(() => serversTable.id),
|
.references(() => serversTable.id, { onDelete: "cascade" }),
|
||||||
clientId: uuid("client_id")
|
clientId: uuid("client_id")
|
||||||
.notNull()
|
.notNull()
|
||||||
.references(() => clientsTable.id),
|
.references(() => clientsTable.id, { onDelete: "cascade" }),
|
||||||
companyId: uuid("company_id")
|
companyId: uuid("company_id")
|
||||||
.notNull()
|
.notNull()
|
||||||
.references(() => companiesTable.id),
|
.references(() => companiesTable.id, { onDelete: "cascade" }),
|
||||||
createdAt: timestamp("created_at", { withTimezone: true })
|
createdAt: timestamp("created_at", { withTimezone: true })
|
||||||
.notNull()
|
.notNull()
|
||||||
.defaultNow(),
|
.defaultNow(),
|
||||||
@@ -54,7 +55,7 @@ export const sessionsTable = pgTable(
|
|||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
|
||||||
export const sessionsRelations = relations(sessionsTable, ({ one }) => ({
|
export const sessionsRelations = relations(sessionsTable, ({ one, many }) => ({
|
||||||
owner: one(usersTable, {
|
owner: one(usersTable, {
|
||||||
fields: [sessionsTable.ownerId],
|
fields: [sessionsTable.ownerId],
|
||||||
references: [usersTable.id],
|
references: [usersTable.id],
|
||||||
@@ -75,4 +76,5 @@ export const sessionsRelations = relations(sessionsTable, ({ one }) => ({
|
|||||||
fields: [sessionsTable.appId],
|
fields: [sessionsTable.appId],
|
||||||
references: [appsTable.id],
|
references: [appsTable.id],
|
||||||
}),
|
}),
|
||||||
|
comments: many(commentsTable),
|
||||||
}));
|
}));
|
||||||
|
|||||||
@@ -2,16 +2,16 @@ import { relations } from "drizzle-orm";
|
|||||||
import { pgTable, text, timestamp, uuid, varchar } from "drizzle-orm/pg-core";
|
import { pgTable, text, timestamp, uuid, varchar } from "drizzle-orm/pg-core";
|
||||||
import { tokensTable } from "./tokens";
|
import { tokensTable } from "./tokens";
|
||||||
import { companiesTable } from "./companies";
|
import { companiesTable } from "./companies";
|
||||||
|
import { commentsTable } from "./comments";
|
||||||
|
|
||||||
export const usersTable = pgTable("users", {
|
export const usersTable = pgTable("users", {
|
||||||
id: uuid("id").defaultRandom().primaryKey(),
|
id: uuid("id").defaultRandom().primaryKey(),
|
||||||
fullname: text("fullname"),
|
fullname: text("fullname"),
|
||||||
email: varchar("email").unique().notNull(),
|
email: varchar("email").unique().notNull(),
|
||||||
password: varchar("password", { length: 72 }).notNull(),
|
password: varchar("password", { length: 72 }).notNull(),
|
||||||
// roles: text("roles").array().notNull(),
|
|
||||||
companyId: uuid("company_id")
|
companyId: uuid("company_id")
|
||||||
.notNull()
|
.notNull()
|
||||||
.references(() => companiesTable.id),
|
.references(() => companiesTable.id, { onDelete: "cascade" }),
|
||||||
createdAt: timestamp("created_at", { withTimezone: true })
|
createdAt: timestamp("created_at", { withTimezone: true })
|
||||||
.notNull()
|
.notNull()
|
||||||
.defaultNow(),
|
.defaultNow(),
|
||||||
@@ -27,4 +27,5 @@ export const usersRelations = relations(usersTable, ({ one, many }) => ({
|
|||||||
references: [companiesTable.id],
|
references: [companiesTable.id],
|
||||||
}),
|
}),
|
||||||
tokens: many(tokensTable),
|
tokens: many(tokensTable),
|
||||||
|
comments: many(commentsTable),
|
||||||
}));
|
}));
|
||||||
|
|||||||
+70
-27
@@ -1,4 +1,5 @@
|
|||||||
import { serve } from "bun";
|
import { format } from "date-fns";
|
||||||
|
import { file, serve } from "bun";
|
||||||
import db from "./db";
|
import db from "./db";
|
||||||
import { serversTable, sessionsTable } from "./db/schema";
|
import { serversTable, sessionsTable } from "./db/schema";
|
||||||
import { and, desc, eq, or } from "drizzle-orm";
|
import { and, desc, eq, or } from "drizzle-orm";
|
||||||
@@ -23,11 +24,17 @@ type Session = typeof sessionsTable.$inferSelect & {
|
|||||||
|
|
||||||
const hostname = os.hostname();
|
const hostname = os.hostname();
|
||||||
|
|
||||||
|
const ipAddress = os
|
||||||
|
.networkInterfaces()
|
||||||
|
["Ethernet"]?.find((e) => e.family === "IPv4")?.address;
|
||||||
|
|
||||||
|
console.log(ipAddress);
|
||||||
|
|
||||||
const json = {
|
const json = {
|
||||||
hostname,
|
hostname,
|
||||||
name: "Новый стол",
|
description: "В переговорке",
|
||||||
location: "В переговорке",
|
|
||||||
companyId: process.env.COMPANY_ID,
|
companyId: process.env.COMPANY_ID,
|
||||||
|
ipAddress,
|
||||||
};
|
};
|
||||||
|
|
||||||
const signature = createHmac("sha256", process.env.HMAC_SECRET)
|
const signature = createHmac("sha256", process.env.HMAC_SECRET)
|
||||||
@@ -49,14 +56,10 @@ try {
|
|||||||
await createServer();
|
await createServer();
|
||||||
console.log("Server created");
|
console.log("Server created");
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
// console.log((error as HTTPError).response.body);
|
console.log((error as Error).message);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO:
|
let serverInfo: typeof serversTable.$inferSelect | undefined;
|
||||||
// - получать список приложений
|
|
||||||
// - отправить список приложений на сервер
|
|
||||||
|
|
||||||
let serverInfo;
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
serverInfo = await getServerInfo();
|
serverInfo = await getServerInfo();
|
||||||
@@ -71,11 +74,14 @@ async function getServerInfo() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
return serverInfo;
|
return serverInfo;
|
||||||
} catch (error) {}
|
} catch (error) {
|
||||||
|
console.log((error as Error).message);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function addApps() {
|
async function addApps() {
|
||||||
try {
|
try {
|
||||||
|
if (!serverInfo) return;
|
||||||
const apps = readdirSync("C:/apps");
|
const apps = readdirSync("C:/apps");
|
||||||
|
|
||||||
const json = {
|
const json = {
|
||||||
@@ -234,23 +240,60 @@ cron.schedule("*/10 * * * * *", updateStatus);
|
|||||||
|
|
||||||
serve({
|
serve({
|
||||||
port: process.env["PORT"],
|
port: process.env["PORT"],
|
||||||
fetch: () => new Response("Hello World"),
|
routes: {
|
||||||
|
"/files/:appName/:timestamp": async ({
|
||||||
|
params: { appName, timestamp },
|
||||||
|
}) => {
|
||||||
|
try {
|
||||||
|
const files = readdirSync(
|
||||||
|
`C://Users/User/Documents/${appName}ClientData/${format(
|
||||||
|
+timestamp,
|
||||||
|
"dd-MM-yyyy_HH-mm"
|
||||||
|
)}`
|
||||||
|
);
|
||||||
|
|
||||||
|
return Response.json(
|
||||||
|
files.map((filename) => {
|
||||||
|
const sizeBytes = file(
|
||||||
|
`C://Users/User/Documents/${appName}ClientData/${format(
|
||||||
|
+timestamp,
|
||||||
|
"dd-MM-yyyy_HH-mm"
|
||||||
|
)}/${filename}`
|
||||||
|
).size;
|
||||||
|
let sizeStr = "";
|
||||||
|
if (sizeBytes >= 1024 * 1024) {
|
||||||
|
sizeStr = (sizeBytes / 1024 / 1024).toFixed(2) + " MB";
|
||||||
|
} else {
|
||||||
|
sizeStr = (sizeBytes / 1024).toFixed(2) + " KB";
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
filename,
|
||||||
|
size: sizeStr,
|
||||||
|
};
|
||||||
|
})
|
||||||
|
);
|
||||||
|
} catch (error) {
|
||||||
|
return Response.json([]);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/files/:appName/:timestamp/:fileName": async ({
|
||||||
|
params: { appName, timestamp, fileName },
|
||||||
|
}) => {
|
||||||
|
try {
|
||||||
|
return new Response(
|
||||||
|
file(
|
||||||
|
`C://Users/User/Documents/${appName}ClientData/${format(
|
||||||
|
+timestamp,
|
||||||
|
"dd-MM-yyyy_HH-mm"
|
||||||
|
)}/${fileName}`
|
||||||
|
)
|
||||||
|
);
|
||||||
|
} catch (error) {
|
||||||
|
return Response.json("...");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
fetch: () => new Response("venom"),
|
||||||
});
|
});
|
||||||
|
|
||||||
console.log("Server is running at http://localhost:3001");
|
console.log("Server is running at http://localhost:3001");
|
||||||
|
|
||||||
// let count = 0;
|
|
||||||
|
|
||||||
// function test() {
|
|
||||||
// if (!(count % 100)) {
|
|
||||||
// console.log(count);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// count++;
|
|
||||||
|
|
||||||
// setTimeout(() => {
|
|
||||||
// test();
|
|
||||||
// }, 0);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// test();
|
|
||||||
|
|||||||
Reference in New Issue
Block a user