mirror of
https://github.com/DrizzleTime/Foxel.git
synced 2026-05-16 16:47:36 +08:00
feat(storage): implement storage management API and enhance storage mode handling
This commit is contained in:
@@ -35,7 +35,9 @@ public class Picture : BaseModel
|
||||
set => ExifInfoJson = value != null ? JsonSerializer.Serialize(value) : null;
|
||||
}
|
||||
|
||||
public StorageType StorageType { get; set; } = StorageType.Local;
|
||||
public int StorageModeId { get; set; }
|
||||
[ForeignKey("StorageModeId")]
|
||||
public StorageMode? StorageMode { get; set; } = null!;
|
||||
|
||||
public ICollection<Tag>? Tags { get; set; }
|
||||
public int? UserId { get; set; }
|
||||
|
||||
16
Models/DataBase/StorageMode.cs
Normal file
16
Models/DataBase/StorageMode.cs
Normal file
@@ -0,0 +1,16 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Foxel.Services.Attributes;
|
||||
|
||||
namespace Foxel.Models.DataBase;
|
||||
|
||||
public class StorageMode : BaseModel
|
||||
{
|
||||
[Required]
|
||||
[StringLength(100)]
|
||||
public string Name { get; set; } = string.Empty;
|
||||
public bool IsEnabled { get; set; } = true;
|
||||
|
||||
public StorageType StorageType { get; set; } = StorageType.Local;
|
||||
[Column(TypeName = "jsonb")] public string? ConfigurationJson { get; set; }
|
||||
}
|
||||
@@ -1,7 +1,5 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using Foxel.Models.DataBase;
|
||||
using Foxel.Models.Enums;
|
||||
using Foxel.Services.Attributes;
|
||||
|
||||
|
||||
namespace Foxel.Models.Request.Picture;
|
||||
|
||||
@@ -15,5 +13,5 @@ public record UploadPictureRequest
|
||||
|
||||
public int? AlbumId { get; set; }
|
||||
|
||||
public StorageType? StorageType { get; set; }
|
||||
public int? StorageModeId { get; set; }
|
||||
}
|
||||
18
Models/Request/Storage/CreateStorageModeRequest.cs
Normal file
18
Models/Request/Storage/CreateStorageModeRequest.cs
Normal file
@@ -0,0 +1,18 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using Foxel.Services.Attributes; // For StorageType enum
|
||||
|
||||
namespace Foxel.Models.Request.Storage;
|
||||
|
||||
public class CreateStorageModeRequest
|
||||
{
|
||||
[Required]
|
||||
[StringLength(100)]
|
||||
public string Name { get; set; } = string.Empty;
|
||||
|
||||
[Required]
|
||||
public StorageType StorageType { get; set; }
|
||||
|
||||
public string? ConfigurationJson { get; set; }
|
||||
|
||||
public bool IsEnabled { get; set; } = true;
|
||||
}
|
||||
21
Models/Request/Storage/UpdateStorageModeRequest.cs
Normal file
21
Models/Request/Storage/UpdateStorageModeRequest.cs
Normal file
@@ -0,0 +1,21 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using Foxel.Services.Attributes; // For StorageType enum
|
||||
|
||||
namespace Foxel.Models.Request.Storage;
|
||||
|
||||
public class UpdateStorageModeRequest
|
||||
{
|
||||
[Required]
|
||||
public int Id { get; set; }
|
||||
|
||||
[Required]
|
||||
[StringLength(100)]
|
||||
public string Name { get; set; } = string.Empty;
|
||||
|
||||
[Required]
|
||||
public StorageType StorageType { get; set; }
|
||||
|
||||
public string? ConfigurationJson { get; set; }
|
||||
|
||||
public bool IsEnabled { get; set; }
|
||||
}
|
||||
@@ -21,4 +21,6 @@ public record PictureResponse
|
||||
public int? AlbumId { get; set; }
|
||||
public string? AlbumName { get; set; }
|
||||
public PermissionType Permission { get; set; } = PermissionType.Public;
|
||||
public string? StorageModeName { get; set; }
|
||||
|
||||
}
|
||||
|
||||
15
Models/Response/Storage/StorageModeResponse.cs
Normal file
15
Models/Response/Storage/StorageModeResponse.cs
Normal file
@@ -0,0 +1,15 @@
|
||||
using Foxel.Services.Attributes; // For StorageType enum
|
||||
|
||||
namespace Foxel.Models.Response.Storage;
|
||||
|
||||
public class StorageModeResponse
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public string Name { get; set; } = string.Empty;
|
||||
public StorageType StorageType { get; set; }
|
||||
public string StorageTypeName => StorageType.ToString();
|
||||
public string? ConfigurationJson { get; set; } // Consider if this should be exposed or masked/summarized
|
||||
public bool IsEnabled { get; set; }
|
||||
public DateTime CreatedAt { get; set; }
|
||||
public DateTime UpdatedAt { get; set; }
|
||||
}
|
||||
7
Models/Response/Storage/StorageTypeResponse.cs
Normal file
7
Models/Response/Storage/StorageTypeResponse.cs
Normal file
@@ -0,0 +1,7 @@
|
||||
namespace Foxel.Models.Response.Storage;
|
||||
|
||||
public class StorageTypeResponse
|
||||
{
|
||||
public int Value { get; set; }
|
||||
public string Name { get; set; } = string.Empty;
|
||||
}
|
||||
Reference in New Issue
Block a user