cooklang_sync_client/
models.rs

1use crate::schema::file_records;
2use diesel::prelude::*;
3use serde::{Deserialize, Serialize};
4use time::OffsetDateTime;
5
6use diesel::{AsExpression, FromSqlRow};
7
8use diesel::sql_types::Integer;
9
10#[repr(i32)]
11#[derive(Debug, Clone, Copy, AsExpression, FromSqlRow, PartialEq, Deserialize, Serialize)]
12#[diesel(sql_type = Integer)]
13pub enum FileFormat {
14    Binary = 1,
15    Text = 2,
16}
17
18#[derive(Debug)]
19pub enum IndexerUpdateEvent {
20    Updated,
21}
22
23#[derive(Queryable, Selectable, Identifiable, Debug, Clone)]
24#[diesel(table_name = file_records)]
25#[diesel(check_for_backend(diesel::sqlite::Sqlite))]
26pub struct FileRecord {
27    pub id: i32,
28    pub jid: Option<i32>,
29    pub deleted: bool,
30    pub path: String,
31    pub size: i64,
32    pub modified_at: OffsetDateTime,
33    pub namespace_id: i32,
34}
35
36#[derive(Insertable, Debug, Clone)]
37#[diesel(table_name = file_records)]
38#[diesel(check_for_backend(diesel::sqlite::Sqlite))]
39pub struct CreateForm {
40    pub jid: Option<i32>,
41    pub path: String,
42    pub deleted: bool,
43    pub size: i64,
44    pub modified_at: OffsetDateTime,
45    pub namespace_id: i32,
46}
47
48#[derive(Insertable, Debug, Clone)]
49#[diesel(table_name = file_records)]
50#[diesel(check_for_backend(diesel::sqlite::Sqlite))]
51pub struct DeleteForm {
52    pub path: String,
53    pub jid: Option<i32>,
54    pub size: i64,
55    pub modified_at: OffsetDateTime,
56    pub deleted: bool,
57    pub namespace_id: i32,
58}
59
60#[derive(AsChangeset, Debug, Clone)]
61#[diesel(table_name = file_records)]
62#[diesel(check_for_backend(diesel::sqlite::Sqlite))]
63pub struct FileRecordUpdateForm {
64    pub size: i64,
65    pub modified_at: OffsetDateTime,
66}
67
68#[derive(AsChangeset, Debug, Clone)]
69#[diesel(table_name = file_records)]
70#[diesel(check_for_backend(diesel::sqlite::Sqlite))]
71pub struct FileRecordNonDeletedFilterForm {
72    pub deleted: bool,
73}
74
75#[derive(AsChangeset, Debug, Clone)]
76#[diesel(table_name = file_records)]
77#[diesel(check_for_backend(diesel::sqlite::Sqlite))]
78pub struct FileRecordDeleteForm {
79    pub id: i32,
80    pub deleted: bool,
81    pub namespace_id: i32,
82}
83
84impl PartialEq<CreateForm> for FileRecord {
85    fn eq(&self, other: &CreateForm) -> bool {
86        self.path == other.path && self.size == other.size && self.modified_at == other.modified_at
87    }
88}