mirror of
https://github.com/spacedriveapp/spacedrive.git
synced 2026-10-12 06:24:23 -04:00
1 parent
fd1afd8500
commit
2d703f2648
6 files changed
+42
-41
No files matched your search
@@ -447,13 +447,14 @@ model Job {
|
||||
//// Indexer Rules ////
|
||||
|
||||
model IndexerRule {
|
||||
id Int @id @default(autoincrement())
|
||||
pub_id Bytes? @unique
|
||||
name String
|
||||
default Boolean @default(false)
|
||||
rules_per_kind Bytes
|
||||
date_created DateTime @default(now())
|
||||
date_modified DateTime @default(now())
|
||||
id Int @id @default(autoincrement())
|
||||
pub_id Bytes @unique
|
||||
|
||||
name String?
|
||||
default Boolean?
|
||||
rules_per_kind Bytes?
|
||||
date_created DateTime?
|
||||
date_modified DateTime?
|
||||
|
||||
locations IndexerRulesInLocation[]
|
||||
|
||||
@@ -461,8 +462,6 @@ model IndexerRule {
|
||||
}
|
||||
|
||||
model IndexerRulesInLocation {
|
||||
date_created DateTime @default(now())
|
||||
|
||||
location_id Int
|
||||
location Location @relation(fields: [location_id], references: [id], onDelete: NoAction, onUpdate: NoAction)
|
||||
|
||||
|
||||
@@ -215,7 +215,7 @@ fn mount_indexer_rule_routes() -> AlphaRouter<Ctx> {
|
||||
.exec()
|
||||
.await?
|
||||
{
|
||||
if indexer_rule.default {
|
||||
if indexer_rule.default.unwrap_or_default() {
|
||||
return Err(rspc::Error::new(
|
||||
ErrorCode::Forbidden,
|
||||
format!("Indexer rule <id={indexer_rule_id}> can't be deleted"),
|
||||
|
||||
@@ -49,9 +49,9 @@ impl Migrate for LibraryConfig {
|
||||
.enumerate()
|
||||
.map(|(i, name)| {
|
||||
db.indexer_rule().update_many(
|
||||
vec![indexer_rule::name::equals(name)],
|
||||
vec![indexer_rule::pub_id::set(Some(uuid_to_bytes(
|
||||
Uuid::from_u128(i as u128),
|
||||
vec![indexer_rule::name::equals(Some(name))],
|
||||
vec![indexer_rule::pub_id::set(uuid_to_bytes(Uuid::from_u128(
|
||||
i as u128,
|
||||
)))],
|
||||
)
|
||||
})
|
||||
|
||||
@@ -2,7 +2,7 @@ use crate::{
|
||||
library::Library,
|
||||
prisma::indexer_rule,
|
||||
util::{
|
||||
db::uuid_to_bytes,
|
||||
db::{maybe_missing, uuid_to_bytes, MissingFieldError},
|
||||
error::{FileIOError, NonUtf8PathError},
|
||||
},
|
||||
};
|
||||
@@ -46,6 +46,8 @@ pub enum IndexerRuleError {
|
||||
RejectByItsChildrenFileIO(FileIOError),
|
||||
#[error("database error: {0}")]
|
||||
Database(#[from] prisma_client_rust::QueryError),
|
||||
#[error("missing-field: {0}")]
|
||||
MissingField(#[from] MissingFieldError),
|
||||
}
|
||||
|
||||
impl From<IndexerRuleError> for rspc::Error {
|
||||
@@ -122,16 +124,18 @@ impl IndexerRuleCreateArgs {
|
||||
return Ok(None);
|
||||
}
|
||||
|
||||
use indexer_rule::*;
|
||||
|
||||
Ok(Some(
|
||||
library
|
||||
.db
|
||||
.indexer_rule()
|
||||
.create(
|
||||
self.name,
|
||||
rules_data,
|
||||
vec![indexer_rule::pub_id::set(Some(uuid_to_bytes(
|
||||
generate_pub_id(),
|
||||
)))],
|
||||
uuid_to_bytes(generate_pub_id()),
|
||||
vec![
|
||||
name::set(Some(self.name)),
|
||||
rules_per_kind::set(Some(rules_data)),
|
||||
],
|
||||
)
|
||||
.exec()
|
||||
.await?,
|
||||
@@ -485,11 +489,14 @@ impl TryFrom<&indexer_rule::Data> for IndexerRule {
|
||||
fn try_from(data: &indexer_rule::Data) -> Result<Self, Self::Error> {
|
||||
Ok(Self {
|
||||
id: Some(data.id),
|
||||
name: data.name.clone(),
|
||||
default: data.default,
|
||||
rules: rmp_serde::from_slice(&data.rules_per_kind)?,
|
||||
date_created: data.date_created.into(),
|
||||
date_modified: data.date_modified.into(),
|
||||
name: maybe_missing(data.name.clone(), "indexer_rule.name")?,
|
||||
default: maybe_missing(data.default, "indexer_rule.default")?,
|
||||
rules: rmp_serde::from_slice(maybe_missing(
|
||||
&data.rules_per_kind,
|
||||
"indexer_rule.rules_per_kind",
|
||||
)?)?,
|
||||
date_created: maybe_missing(data.date_created, "indexer_rule.date_created")?.into(),
|
||||
date_modified: maybe_missing(data.date_modified, "indexer_rule.date_modified")?.into(),
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -643,24 +650,20 @@ mod seeder {
|
||||
let pub_id = uuid_to_bytes(Uuid::from_u128(i as u128));
|
||||
let rules = rmp_serde::to_vec_named(&rule.rules).map_err(IndexerRuleError::from)?;
|
||||
|
||||
use indexer_rule::*;
|
||||
|
||||
let data = vec![
|
||||
name::set(Some(rule.name.to_string())),
|
||||
rules_per_kind::set(Some(rules.clone())),
|
||||
default::set(Some(rule.default)),
|
||||
];
|
||||
|
||||
client
|
||||
.indexer_rule()
|
||||
.upsert(
|
||||
indexer_rule::pub_id::equals(pub_id.clone()),
|
||||
indexer_rule::create(
|
||||
rule.name.to_string(),
|
||||
rules.clone(),
|
||||
vec![
|
||||
indexer_rule::pub_id::set(Some(pub_id.clone())),
|
||||
indexer_rule::default::set(rule.default),
|
||||
],
|
||||
),
|
||||
vec![
|
||||
indexer_rule::name::set(rule.name.to_string()),
|
||||
indexer_rule::rules_per_kind::set(rules),
|
||||
indexer_rule::pub_id::set(Some(pub_id.clone())),
|
||||
indexer_rule::default::set(rule.default),
|
||||
],
|
||||
indexer_rule::create(pub_id.clone(), data.clone()),
|
||||
data,
|
||||
)
|
||||
.exec()
|
||||
.await?;
|
||||
|
||||
@@ -120,7 +120,7 @@ export type GetArgs = { id: number }
|
||||
|
||||
export type IdentifyUniqueFilesArgs = { id: number; path: string }
|
||||
|
||||
export type IndexerRule = { id: number; pub_id: number[] | null; name: string; default: boolean; rules_per_kind: number[]; date_created: string; date_modified: string }
|
||||
export type IndexerRule = { id: number; pub_id: number[]; name: string | null; default: boolean | null; rules_per_kind: number[] | null; date_created: string | null; date_modified: string | null }
|
||||
|
||||
/**
|
||||
* `IndexerRuleCreateArgs` is the argument received from the client using rspc to create a new indexer rule.
|
||||
|
||||
Generated
+1
-2
@@ -5829,7 +5829,7 @@ packages:
|
||||
magic-string: 0.27.0
|
||||
react-docgen-typescript: 2.2.2(typescript@5.0.4)
|
||||
typescript: 5.0.4
|
||||
vite: 4.3.9(less@4.1.3)
|
||||
vite: 4.3.9(@types/node@18.15.1)
|
||||
|
||||
/@jridgewell/gen-mapping@0.3.3:
|
||||
resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==}
|
||||
@@ -23807,7 +23807,6 @@ packages:
|
||||
rollup: 3.24.1
|
||||
optionalDependencies:
|
||||
fsevents: 2.3.2
|
||||
dev: true
|
||||
|
||||
/vite@4.3.9(less@4.1.3):
|
||||
resolution: {integrity: sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg==}
|
||||
|
||||
Reference in new issue
Block a user