✨ Adds name to tracker
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
-- This file should undo anything in `up.sql`
|
||||
|
||||
DROP TABLE "trackers";
|
||||
DROP TABLE "hits";
|
||||
DROP TABLE "trackers";
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
CREATE TABLE "trackers"
|
||||
(
|
||||
"id" UUID PRIMARY KEY NOT NULL UNIQUE,
|
||||
"name" TEXT,
|
||||
"created_at" TIMESTAMP NOT NULL
|
||||
);
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
use crate::auth::Authenticated;
|
||||
use crate::dtos::tracker::TrackerDTO;
|
||||
use crate::dtos::tracker::{NewTrackerDTO, TrackerDTO};
|
||||
use crate::models::AppState;
|
||||
use crate::models::tracker::Tracker;
|
||||
use crate::schema::hits::dsl as hits;
|
||||
@@ -61,12 +61,18 @@ pub fn get(
|
||||
}
|
||||
}
|
||||
|
||||
#[post("/")]
|
||||
pub fn create(_auth: Authenticated, state: &State<AppState>) -> Result<Json<TrackerDTO>, Status> {
|
||||
#[post("/", format = "json", data = "<data>")]
|
||||
pub fn create(
|
||||
data: Json<NewTrackerDTO>,
|
||||
_auth: Authenticated,
|
||||
state: &State<AppState>,
|
||||
) -> Result<Json<TrackerDTO>, Status> {
|
||||
let mut db = state.db.lock().unwrap();
|
||||
|
||||
let data = data.into_inner();
|
||||
let new = Tracker {
|
||||
id: Uuid::new_v4(),
|
||||
name: data.name,
|
||||
created_at: Utc::now().naive_utc(),
|
||||
};
|
||||
let result = diesel::insert_into(trackers::table)
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
use crate::models::tracker::Tracker;
|
||||
use serde::Serialize;
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
#[derive(Serialize)]
|
||||
pub struct TrackerDTO {
|
||||
pub id: String,
|
||||
pub name: Option<String>,
|
||||
pub created_at: String,
|
||||
}
|
||||
|
||||
@@ -11,7 +12,13 @@ impl TrackerDTO {
|
||||
pub fn from(tracker: &Tracker) -> TrackerDTO {
|
||||
TrackerDTO {
|
||||
id: tracker.id.to_string(),
|
||||
name: tracker.name.clone(),
|
||||
created_at: tracker.created_at.to_string(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Deserialize)]
|
||||
pub struct NewTrackerDTO {
|
||||
pub name: Option<String>,
|
||||
}
|
||||
|
||||
@@ -7,5 +7,6 @@ use uuid::Uuid;
|
||||
#[diesel(check_for_backend(diesel::pg::Pg))]
|
||||
pub struct Tracker {
|
||||
pub id: Uuid,
|
||||
pub name: Option<String>,
|
||||
pub created_at: NaiveDateTime,
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ diesel::table! {
|
||||
diesel::table! {
|
||||
trackers (id) {
|
||||
id -> Uuid,
|
||||
name -> Nullable<Text>,
|
||||
created_at -> Timestamp,
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user