list uploaded code bundles on bot page
This commit is contained in:
parent
0f27ca80fb
commit
3e902bb56e
4 changed files with 43 additions and 15 deletions
|
@ -57,3 +57,9 @@ pub fn create_code_bundle(
|
|||
.values(new_code_bundle)
|
||||
.get_result(conn)
|
||||
}
|
||||
|
||||
pub fn find_bot_code_bundles(bot_id: i32, conn: &PgConnection) -> QueryResult<Vec<CodeBundle>> {
|
||||
code_bundles::table
|
||||
.filter(code_bundles::bot_id.eq(bot_id))
|
||||
.get_results(conn)
|
||||
}
|
||||
|
|
|
@ -5,6 +5,7 @@ use axum::Json;
|
|||
use rand::distributions::Alphanumeric;
|
||||
use rand::Rng;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use serde_json::{json, value::Value as JsonValue};
|
||||
use std::io::Cursor;
|
||||
use std::path::{self, PathBuf};
|
||||
|
||||
|
@ -35,10 +36,17 @@ pub async fn create_bot(
|
|||
}
|
||||
|
||||
// TODO: handle errors
|
||||
pub async fn get_bot(conn: DatabaseConnection, Path(bot_id): Path<i32>) -> impl IntoResponse {
|
||||
bots::find_bot(bot_id, &conn)
|
||||
.map(Json)
|
||||
.map_err(|_| StatusCode::NOT_FOUND)
|
||||
pub async fn get_bot(
|
||||
conn: DatabaseConnection,
|
||||
Path(bot_id): Path<i32>,
|
||||
) -> Result<Json<JsonValue>, StatusCode> {
|
||||
let bot = bots::find_bot(bot_id, &conn).map_err(|_| StatusCode::NOT_FOUND)?;
|
||||
let bundles = bots::find_bot_code_bundles(bot.id, &conn)
|
||||
.map_err(|_| StatusCode::INTERNAL_SERVER_ERROR)?;
|
||||
Ok(Json(json!({
|
||||
"bot": bot,
|
||||
"bundles": bundles,
|
||||
})))
|
||||
}
|
||||
|
||||
pub async fn get_my_bots(
|
||||
|
|
|
@ -12,13 +12,12 @@
|
|||
"format": "prettier --ignore-path .gitignore --write --plugin-search-dir=. ."
|
||||
},
|
||||
"devDependencies": {
|
||||
"@originjs/vite-plugin-commonjs": "^1.0.1",
|
||||
"@sveltejs/adapter-auto": "next",
|
||||
"@sveltejs/kit": "next",
|
||||
"@sveltejs/vite-plugin-svelte": "^1.0.0-next.30",
|
||||
"@typescript-eslint/eslint-plugin": "^4.31.1",
|
||||
"@typescript-eslint/parser": "^4.31.1",
|
||||
"@originjs/vite-plugin-commonjs": "^1.0.1",
|
||||
"@sveltejs/vite-plugin-svelte": "^1.0.0-next.30",
|
||||
"vite-plugin-wasm-pack": "^0.1.9",
|
||||
"eslint": "^7.32.0",
|
||||
"eslint-config-prettier": "^8.3.0",
|
||||
"eslint-plugin-svelte3": "^3.2.1",
|
||||
|
@ -28,9 +27,11 @@
|
|||
"svelte-check": "^2.2.6",
|
||||
"svelte-preprocess": "^4.9.4",
|
||||
"tslib": "^2.3.1",
|
||||
"typescript": "^4.4.3"
|
||||
"typescript": "^4.4.3",
|
||||
"vite-plugin-wasm-pack": "^0.1.9"
|
||||
},
|
||||
"dependencies": {
|
||||
"dayjs": "^1.10.7",
|
||||
"moment": "^2.29.1"
|
||||
},
|
||||
"type": "module"
|
||||
|
|
|
@ -1,19 +1,22 @@
|
|||
<script lang="ts" context="module">
|
||||
import { get_session_token } from "$lib/auth";
|
||||
import { mount_component } from "svelte/internal";
|
||||
|
||||
export async function load({ page }) {
|
||||
const token = get_session_token();
|
||||
const res = await fetch(`/api/bots/${page.params["bot_id"]}`, {
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
"Authorization": `Bearer ${token}`,
|
||||
Authorization: `Bearer ${token}`,
|
||||
},
|
||||
});
|
||||
|
||||
if (res.ok) {
|
||||
const data = await res.json();
|
||||
return {
|
||||
props: {
|
||||
bot: await res.json(),
|
||||
bot: data["bot"],
|
||||
bundles: data["bundles"],
|
||||
},
|
||||
};
|
||||
}
|
||||
|
@ -26,7 +29,10 @@
|
|||
</script>
|
||||
|
||||
<script lang="ts">
|
||||
import dayjs from "dayjs";
|
||||
|
||||
export let bot: object;
|
||||
export let bundles: object[];
|
||||
|
||||
let files;
|
||||
|
||||
|
@ -41,7 +47,7 @@
|
|||
method: "POST",
|
||||
headers: {
|
||||
// the content type header will be set by the browser
|
||||
"Authorization": `Bearer ${token}`,
|
||||
Authorization: `Bearer ${token}`,
|
||||
},
|
||||
body: formData,
|
||||
});
|
||||
|
@ -54,9 +60,16 @@
|
|||
{bot["name"]}
|
||||
</div>
|
||||
|
||||
|
||||
<div>Upload code</div>
|
||||
<form on:submit|preventDefault={submitCode}>
|
||||
<input type="file" bind:files/>
|
||||
<input type="file" bind:files />
|
||||
<button type="submit">Submit</button>
|
||||
</form>
|
||||
|
||||
<ul>
|
||||
{#each bundles as bundle}
|
||||
<li>
|
||||
bundle created at {dayjs(bundle["created_at"]).format("YYYY-MM-DD HH:mm")}
|
||||
</li>
|
||||
{/each}
|
||||
</ul>
|
||||
|
|
Loading…
Reference in a new issue