feat: starting db abstractions

This commit is contained in:
Jef Roosens 2023-05-16 15:47:13 +02:00
parent 303e3ffd4e
commit 0b10885015
Signed by: Jef Roosens
GPG key ID: B75D4F293C7052DB
6 changed files with 119 additions and 44 deletions

View file

@ -1,5 +1,6 @@
use crate::db::users::{user_all, user_insert, User};
use crate::db::users::{User, NewUser};
use crate::{Context, Error};
use diesel::RunQueryDsl;
#[poise::command(prefix_command, slash_command)]
pub async fn register(
@ -8,16 +9,21 @@ pub async fn register(
last_name: String,
email: String,
) -> Result<(), Error> {
let user = User {
discord_id: ctx.author().id.0 as i64,
first_name,
last_name,
email,
};
if let Some(guild_id) = ctx.guild_id() {
let new_user = NewUser {
discord_id: ctx.author().id.0 as i64,
guild_id: guild_id.into(),
first_name,
last_name,
email,
};
{
let mut conn = ctx.data().pool.get()?;
user_insert(&mut conn, &user);
{
let mut conn = ctx.data().pool.get()?;
new_user.insert(&mut conn);
}
} else {
ctx.say("You have to send this message from a guild.").await?;
}
Ok(())
@ -25,21 +31,25 @@ pub async fn register(
#[poise::command(prefix_command, slash_command)]
pub async fn registered(ctx: Context<'_>) -> Result<(), Error> {
let users = {
let mut conn = ctx.data().pool.get()?;
user_all(&mut conn)
};
if let Some(guild_id) = ctx.guild_id() {
let users = {
let mut conn = ctx.data().pool.get()?;
User::by_guild_id(guild_id.into()).load(&mut conn)?
};
ctx.send(|f| {
f.embed(|e| {
e.description("Registered users").fields(
users
.into_iter()
.map(|u| (format!("{} {}", u.first_name, u.last_name), u.email, false)),
)
ctx.send(|f| {
f.embed(|e| {
e.description("Registered users").fields(
users
.into_iter()
.map(|u| (format!("{} {}", u.first_name, u.last_name), u.email, false)),
)
})
})
})
.await?;
.await?;
} else {
ctx.say("You are not in a guild.").await?;
}
Ok(())
}