diff --git a/astro.config.mjs b/astro.config.mjs index 867d01c..bd8e9b5 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -1,9 +1,10 @@ import { defineConfig } from "astro/config"; import tailwind from "@astrojs/tailwind"; import icon from "astro-icon"; - import svelte from "@astrojs/svelte"; +import node from "@astrojs/node"; + // https://astro.build/config export default defineConfig({ integrations: [tailwind(), icon(), svelte()], @@ -19,7 +20,15 @@ export default defineConfig({ target: "http://localhost:8080", changeOrigin: true, }, + "/api/packages": { + target: "http://localhost:8080", + changeOrigin: true, + }, }, }, }, + output: "server", + adapter: node({ + mode: "hybrid", + }), }); diff --git a/package-lock.json b/package-lock.json index d54487b..3356288 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,7 @@ "version": "0.0.1", "dependencies": { "@astrojs/check": "^0.8.2", + "@astrojs/node": "^8.3.2", "@astrojs/svelte": "^5.7.0", "@astrojs/tailwind": "^5.1.0", "@fastify/compress": "^7.0.3", @@ -328,6 +329,18 @@ "vfile": "^6.0.2" } }, + "node_modules/@astrojs/node": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/@astrojs/node/-/node-8.3.2.tgz", + "integrity": "sha512-Upv0D+9b3RXp7XViQTtrijaDqihHWbVHLdJQ2sxtPOEtw2GDrVxuC6LmXIUew5YvJ9Ylmpst6KizVwO8d/K9/Q==", + "dependencies": { + "send": "^0.18.0", + "server-destroy": "^1.0.1" + }, + "peerDependencies": { + "astro": "^4.2.0" + } + }, "node_modules/@astrojs/prism": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@astrojs/prism/-/prism-3.1.0.tgz", @@ -8917,6 +8930,11 @@ "node": ">= 0.8.0" } }, + "node_modules/server-destroy": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", + "integrity": "sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==" + }, "node_modules/set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", diff --git a/package.json b/package.json index fbf16ae..a284ffd 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,7 @@ }, "dependencies": { "@astrojs/check": "^0.8.2", + "@astrojs/node": "^8.3.2", "@astrojs/svelte": "^5.7.0", "@astrojs/tailwind": "^5.1.0", "@fastify/compress": "^7.0.3", diff --git a/server.js b/server.js index 14bf58a..1c6aad7 100644 --- a/server.js +++ b/server.js @@ -3,11 +3,12 @@ import { createServer } from "node:http"; import path from "path"; import { Sequelize, DataTypes } from "sequelize"; import { fileURLToPath } from "url"; +import { handler as ssrHandler } from "./dist/server/entry.mjs"; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); const app = express(); -const publicPath = "dist"; +const publicPath = "dist/client"; const sequelize = new Sequelize("database", "user", "password", { host: "localhost", dialect: "sqlite", @@ -27,6 +28,9 @@ const catalog_assets = sequelize.define("catalog_assets", { description: { type: DataTypes.TEXT, }, + author: { + type: DataTypes.TEXT, + }, image: { type: DataTypes.TEXT, }, @@ -53,10 +57,6 @@ const catalog_assets = sequelize.define("catalog_assets", { }, }); -app.use(express.static(publicPath)); -app.use("/images/", express.static("./database_assets/image")); -app.use("/videos/", express.static("./database_assets/video")); - app.get("/api", function (request, reply) { reply.send({ hello: "world" }); }); @@ -83,6 +83,7 @@ app.get("/api/catalog-assets", async (request, reply) => { acc[asset.package_name] = { title: asset.title, description: asset.description, + author: asset.author, image: asset.image, tags: asset.tags, version: asset.version, @@ -128,6 +129,7 @@ app.get("/api/packages/:package", async (request, reply) => { title: package_row.get("title"), description: package_row.get("description"), image: package_row.get("image"), + author: package_row.get("author"), tags: package_row.get("tags"), version: package_row.get("version"), background_image: package_row.get("background_image"), @@ -141,10 +143,16 @@ app.get("/api/packages/:package", async (request, reply) => { } }); +app.use("/images/", express.static("./database_assets/image")); +app.use("/videos/", express.static("./database_assets/video")); +app.use(ssrHandler); +app.use(express.static(publicPath)); + // await catalog_assets.create({ -// package_name: "koaku.fortnite.jpeg", +// package_name: "com.dababy.fortnite", // title: "fortnite.jpeg", // image: "fortnite.jpg", +// author: "DaBaby LETS GOOOOOOOOOOOOOOOOOOOOOOO" // version: "6.9.420", // description: "a man in a blessings shirt sticking his tounge out", // tags: ["Fortnite", "Shit out my ass"], diff --git a/src/components/catalog/CatalogCard.svelte b/src/components/catalog/CatalogCard.svelte index edc9a69..0a3c811 100644 --- a/src/components/catalog/CatalogCard.svelte +++ b/src/components/catalog/CatalogCard.svelte @@ -11,18 +11,36 @@ {#await assetPromise} Loading assets... {:then assets} -
{asset.description}
-Tags: {asset.tags.join(", ")}
-Version: {asset.version}
-Type: {asset.type}
-