API was finished

This commit is contained in:
2026-03-25 20:58:53 -04:00
parent 6bffd594c0
commit c6fd432ac1
6 changed files with 166 additions and 42 deletions

View File

@@ -5,9 +5,10 @@ use dotenvy::dotenv;
use std::env;
use serde::{Serialize};
use diesel_derive_enum::DbEnum;
use std::str::FromStr;
use strum_macros::EnumString;
#[derive(Debug, PartialEq, DbEnum, Serialize)]
#[derive(Debug, PartialEq, DbEnum, Serialize, EnumString)]
#[db_enum(existing_type_path = "crate::schema::sql_types::DidTargetType")]
pub enum DidTargetType {
#[db_enum(rename ="URL")]
@@ -24,12 +25,12 @@ pub enum DidTargetType {
CustomMessage
}
#[derive(Queryable, Selectable, Serialize)]
#[derive(Queryable, Selectable, Serialize, AsChangeset)]
#[diesel(table_name = crate::schema::dids)]
#[diesel(check_for_backend(diesel::pg::Pg))]
pub struct Did {
pub id: i32,
pub did: String,
pub did_number: String,
pub target_type: DidTargetType,
pub target: Option<String>,
pub active: bool
@@ -38,7 +39,7 @@ pub struct Did {
#[derive(Insertable)]
#[diesel(table_name = crate::schema::dids)]
pub struct NewDid<'a> {
pub did: &'a str,
pub did_number: &'a str,
pub target_type: DidTargetType,
pub target: Option<&'a str>,
pub active: bool
@@ -52,15 +53,51 @@ pub fn connect() -> PgConnection {
.unwrap_or_else(|_| panic!("Error connecting to database"))
}
pub fn add_did() -> Result<Did, Error> {
pub fn get_did(a_id :i32) -> Result<Did, Error> {
use crate::schema::dids::dsl::*;
let mut conn = connect();
let result = dids.find(a_id).first(&mut conn)?;
Ok(result)
}
pub fn delete_did(i: i32) -> Result<(), Error> {
use crate::schema::dids;
use crate::schema::dids::columns::id;
let mut conn = connect();
diesel::delete(dids::table)
.filter(id.eq(i))
.execute(&mut conn)?;
Ok(())
}
pub fn update_did(d: Did)-> Result<(), Error> {
use crate::schema::dids;
use crate::schema::dids::dsl::*;
let mut conn = connect();
diesel::update(dids::table)
.filter(id.eq(d.id))
.set(d)
.execute(&mut conn)?;
Ok(())
}
pub fn add_did(did_number: &str, target_type: &str, target: &str, active: bool)
-> Result<Did, Error> {
use crate::schema::dids;
let mut conn = connect();
let new_did = NewDid {
did: "123456",
target_type: DidTargetType::Url,
target: Some("123456"),
active: true
did_number: did_number,
target_type: DidTargetType::from_str(target_type).unwrap(),
target: Some(target),
active: active
};
let did = diesel::insert_into(dids::table)