diff --git a/client/src/components/Graph.vue b/client/src/components/Graph.vue index ea8d453..2fe2bdc 100644 --- a/client/src/components/Graph.vue +++ b/client/src/components/Graph.vue @@ -14,7 +14,7 @@ import { defineComponent } from 'vue'; import { HasticPod, TimeRange } from "./hastic_pod"; import { getMetrics } from '../services/metrics.service'; -import { getSegments, postSegment, deleteSegment } from '../services/segments'; +import { getSegments, postSegment, deleteSegment } from '../services/segments.service'; import { LineTimeSerie } from "@chartwerk/line-pod"; import { SegmentArray } from '@/types/segment_array'; diff --git a/client/src/services/segments.ts b/client/src/services/segments.service.ts similarity index 82% rename from client/src/services/segments.ts rename to client/src/services/segments.service.ts index fec3ea7..d0e8e32 100644 --- a/client/src/services/segments.ts +++ b/client/src/services/segments.service.ts @@ -18,8 +18,10 @@ export async function getSegments(from: number, to: number): Promise } export async function postSegment(segment: Segment): Promise { - segment.id = undefined; // because we post a new segment. It's a hack - const resp = await axios.post(SEGMENTS_API_URL, segment); + const segObj = segment.toObject(); + segObj.id = undefined; // because we post a new segment. It's a hack + + const resp = await axios.post(SEGMENTS_API_URL, segObj); return resp['data']['id']; } diff --git a/client/src/types/segment.ts b/client/src/types/segment.ts index 4b39088..37e4ea0 100644 --- a/client/src/types/segment.ts +++ b/client/src/types/segment.ts @@ -1,7 +1,7 @@ export type SegmentId = string; export class Segment { - constructor(private _id: SegmentId | undefined, public from: number, public to: number) { + constructor(private _id: SegmentId | undefined, public from: number, public to: number, segmentType = 1) { if(this._id === undefined) { throw new Error('id is undefined'); } @@ -11,6 +11,7 @@ export class Segment { if(isNaN(+to)) { throw new Error('to can`t be NaN'); } + this._segmentType = segmentType; } get id(): SegmentId { return this._id; } @@ -33,4 +34,19 @@ export class Segment { equals(segment: Segment) { return this._id === segment._id; } + + // TODO: remove this and make original inheritence + _segmentType: number + get segmentType(): number { return this._segmentType; } + set segmentType(value) { this._segmentType = value; } + + toObject() { + return { + id: this.id, + from: this.from, + to: this.to, + segment_type: "Label" + } + } + } \ No newline at end of file diff --git a/server/.gitignore b/server/.gitignore index 1537a4b..991eda0 100644 --- a/server/.gitignore +++ b/server/.gitignore @@ -1,2 +1,3 @@ target/* data.db +data/* diff --git a/server/src/services/segments_service.rs b/server/src/services/segments_service.rs index 8687e5d..6db0bb7 100644 --- a/server/src/services/segments_service.rs +++ b/server/src/services/segments_service.rs @@ -9,7 +9,9 @@ use std::iter::repeat_with; const ID_LENGTH: usize = 20; pub type SegmentId = String; -#[derive(Debug, Serialize, Deserialize, Clone, Copy)] + +// TODO: make logic with this enum shorter +#[derive(Debug, Serialize, Deserialize, Clone, Copy, PartialEq)] pub enum SegmentType { Label = 1, Detection = 2, @@ -23,8 +25,17 @@ impl SegmentType { SegmentType::Detection } } + + fn to_integer(&self) -> u64 { + if *self == SegmentType::Label { + 1 + } else { + 2 + } + } } + #[derive(Debug, Serialize, Deserialize)] pub struct Segment { pub id: Option, @@ -53,13 +64,17 @@ pub struct SegmentsService { impl SegmentsService { pub fn new() -> anyhow::Result { - let conn = Connection::open("./segments.db")?; + + // TODO: move it to data service + std::fs::create_dir_all("./data").unwrap(); + + let conn = Connection::open("./data/segments.db")?; conn.execute( "CREATE TABLE IF NOT EXISTS segment ( - id TEXT PRIMARY KEY, - start INTEGER NOT NULL, - end INTEGER NOT NULL, - segment_type INTEGER NOT NULL + id TEXT PRIMARY KEY, + start INTEGER NOT NULL, + end INTEGER NOT NULL, + segment_type INTEGER NOT NULL )", [], )?; @@ -91,7 +106,7 @@ impl SegmentsService { self.connection.lock().unwrap().execute( "INSERT INTO segment (id, start, end, segment_type) VALUES (?1, ?2, ?3, ?4)", - params![id, min, max], + params![id, min, max, segment.segment_type.to_integer()], )?; Ok(Segment { id: Some(id),