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