cloudillo_file/
settings.rs1use crate::prelude::*;
4use cloudillo_core::settings::types::{
5 PermissionLevel, SettingDefinition, SettingScope, SettingValue, SettingsRegistry,
6};
7
8pub fn register_settings(registry: &mut SettingsRegistry) -> ClResult<()> {
10 registry.register(
12 SettingDefinition::builder("file.max_file_size_mb")
13 .description("Maximum file upload size in megabytes")
14 .default(SettingValue::Int(100))
15 .scope(SettingScope::Global)
16 .permission(PermissionLevel::Admin)
17 .build()?,
18 )?;
19
20 registry.register(
22 SettingDefinition::builder("file.max_generate_variant")
23 .description("Maximum size variant to generate: tn, sd (720), md (1280), hd (1920), or xd (3840)")
24 .default(SettingValue::String("hd".into()))
25 .scope(SettingScope::Global)
26 .permission(PermissionLevel::Admin)
27 .build()?
28 )?;
29
30 registry.register(
32 SettingDefinition::builder("file.max_cache_variant")
33 .description("Maximum size variant to download when caching attachments: tn, sd (720), md (1280), hd (1920), or xd (3840)")
34 .default(SettingValue::String("md".into()))
35 .scope(SettingScope::Global)
36 .permission(PermissionLevel::Admin)
37 .build()?
38 )?;
39
40 registry.register(
42 SettingDefinition::builder("file.sync_max_vis")
43 .description("Maximum visual variant to sync: tn, sd, md, hd, xd")
44 .default(SettingValue::String("md".into()))
45 .scope(SettingScope::Tenant)
46 .permission(PermissionLevel::User)
47 .build()?,
48 )?;
49
50 registry.register(
51 SettingDefinition::builder("file.sync_max_vid")
52 .description("Maximum video variant to sync: tn, sd, md, hd, xd")
53 .default(SettingValue::String("sd".into()))
54 .scope(SettingScope::Tenant)
55 .permission(PermissionLevel::User)
56 .build()?,
57 )?;
58
59 registry.register(
60 SettingDefinition::builder("file.sync_max_aud")
61 .description("Maximum audio variant to sync: sd, md, hd")
62 .default(SettingValue::String("md".into()))
63 .scope(SettingScope::Tenant)
64 .permission(PermissionLevel::User)
65 .build()?,
66 )?;
67
68 registry.register(
70 SettingDefinition::builder("file.thumbnail_format")
71 .description("Image format for thumbnails: avif, webp, jpeg, or png")
72 .default(SettingValue::String("webp".into()))
73 .scope(SettingScope::Global)
74 .permission(PermissionLevel::Admin)
75 .build()?,
76 )?;
77
78 registry.register(
80 SettingDefinition::builder("file.image_format")
81 .description(
82 "Image format for larger variants (sd, md, hd, xd): avif, webp, jpeg, or png",
83 )
84 .default(SettingValue::String("webp".into()))
85 .scope(SettingScope::Global)
86 .permission(PermissionLevel::Admin)
87 .build()?,
88 )?;
89
90 registry.register(
92 SettingDefinition::builder("limits.max_storage_gb")
93 .description("Maximum storage quota in gigabytes")
94 .default(SettingValue::Int(100))
95 .scope(SettingScope::Tenant)
96 .permission(PermissionLevel::Admin)
97 .build()?,
98 )?;
99
100 Ok(())
101}
102
103