This repository has been archived on 2025-09-28. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
nekrochan/src/web/actions/mod.rs
sneedmaster a2d093954d Nekrocuck
2025-09-28 12:59:09 +02:00

47 lines
1.0 KiB
Rust

use askama::Template;
use sqlx::query_as;
use super::tcx::TemplateCtx;
use crate::{ctx::Ctx, db::models::Post};
pub mod appeal_ban;
pub mod create_post;
pub mod edit_posts;
pub mod report_posts;
pub mod staff_post_actions;
pub mod user_post_actions;
#[derive(Template)]
#[template(path = "action.html")]
pub struct ActionTemplate {
pub tcx: TemplateCtx,
pub response: String,
}
pub async fn get_posts_from_ids(ctx: &Ctx, ids: &Vec<String>) -> Vec<Post> {
let mut posts = Vec::new();
for id in ids {
if let Some((board, id)) = parse_id(id) {
if let Ok(Some(post)) = query_as("SELECT * FROM overboard WHERE board = $1 AND id = $2")
.bind(board)
.bind(id)
.fetch_optional(ctx.db())
.await
{
posts.push(post);
}
}
}
posts
}
fn parse_id(id: &str) -> Option<(String, i64)> {
let (board, id) = id.split_once('/')?;
let board = board.to_owned();
let id = id.parse().ok()?;
Some((board, id))
}