feat: V2 microservices stack — backend services, gateway, JWT auth
Add full V2 architecture: identity, content, studio (.NET 10) and file, render, notification, gateway (Go) services with vendored deps, plus DB migrations, event/API contracts, and an init-db script. Wire the Next.js frontend to the gateway: server-side JWT auth routes (login/register/refresh/logout/me), gateway fetch helper, and session/ cookie/jwt helpers under src/lib. Containerize the stack via docker-compose.v2.yml and per-service Dockerfiles. Base images resolve through a Nexus mirror (Docker Hub) and MCR directly; npm/NuGet pull from Nexus groups. Self-host fonts via next/font/local to avoid Google Fonts (geo-blocked). Add CI workflow and ignore .env.v2, *.stackdump, and .NET bin/obj. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,300 @@
|
||||
namespace FlatRender.ContentSvc.Models.Requests;
|
||||
|
||||
// ── Taxonomy ─────────────────────────────────────────────────────────────────
|
||||
|
||||
public record CreateCategoryRequest(
|
||||
Guid? ParentId,
|
||||
string Name,
|
||||
string Slug,
|
||||
string? Description,
|
||||
string? ImageUrl,
|
||||
string? Icon,
|
||||
string? MetaTitle,
|
||||
string? MetaDescription,
|
||||
string? MetaKeywords,
|
||||
bool BotFollow,
|
||||
int Sort,
|
||||
bool IsActive
|
||||
);
|
||||
|
||||
public record UpdateCategoryRequest(
|
||||
Guid? ParentId,
|
||||
string Name,
|
||||
string Slug,
|
||||
string? Description,
|
||||
string? ImageUrl,
|
||||
string? Icon,
|
||||
string? MetaTitle,
|
||||
string? MetaDescription,
|
||||
string? MetaKeywords,
|
||||
bool BotFollow,
|
||||
int Sort,
|
||||
bool IsActive
|
||||
);
|
||||
|
||||
public record CreateTagRequest(
|
||||
string Name,
|
||||
string? LatinName,
|
||||
string Slug,
|
||||
string? AppliesToMode,
|
||||
bool IsActive
|
||||
);
|
||||
|
||||
public record UpdateTagRequest(
|
||||
string Name,
|
||||
string? LatinName,
|
||||
string Slug,
|
||||
string? AppliesToMode,
|
||||
bool IsActive
|
||||
);
|
||||
|
||||
public record CreateFontRequest(
|
||||
string Name,
|
||||
string? OriginalName,
|
||||
string? SystemName,
|
||||
string? Family,
|
||||
int? Weight,
|
||||
string? Style,
|
||||
string Direction,
|
||||
string? FileUrl,
|
||||
string? SampleImageUrl,
|
||||
bool IsPremium,
|
||||
bool IsActive,
|
||||
bool InstalledOnNodes,
|
||||
int Sort
|
||||
);
|
||||
|
||||
public record UpdateFontRequest(
|
||||
string Name,
|
||||
string? OriginalName,
|
||||
string? SystemName,
|
||||
string? Family,
|
||||
int? Weight,
|
||||
string? Style,
|
||||
string Direction,
|
||||
string? FileUrl,
|
||||
string? SampleImageUrl,
|
||||
bool IsPremium,
|
||||
bool IsActive,
|
||||
bool InstalledOnNodes,
|
||||
int Sort
|
||||
);
|
||||
|
||||
public record CreateMusicTrackRequest(
|
||||
string Name,
|
||||
string? Caption,
|
||||
string? Keywords,
|
||||
string Url,
|
||||
string? WaveformData,
|
||||
decimal DurationSec,
|
||||
int? Bpm,
|
||||
string? Genre,
|
||||
string? Mood,
|
||||
bool IsPremium,
|
||||
bool IsActive,
|
||||
int Sort
|
||||
);
|
||||
|
||||
public record UpdateMusicTrackRequest(
|
||||
string Name,
|
||||
string? Caption,
|
||||
string? Keywords,
|
||||
string Url,
|
||||
string? WaveformData,
|
||||
decimal DurationSec,
|
||||
int? Bpm,
|
||||
string? Genre,
|
||||
string? Mood,
|
||||
bool IsPremium,
|
||||
bool IsActive,
|
||||
int Sort
|
||||
);
|
||||
|
||||
// ── Templates ────────────────────────────────────────────────────────────────
|
||||
|
||||
public record CreateContainerRequest(
|
||||
string Slug,
|
||||
string Name,
|
||||
string? Description,
|
||||
string? Keywords,
|
||||
string? NewsText,
|
||||
string? Image,
|
||||
string? Demo,
|
||||
string? FullDemo,
|
||||
string? MiniDemo,
|
||||
string? DemoScriptTag,
|
||||
bool IsPublished,
|
||||
bool IsPremium,
|
||||
bool IsMockup,
|
||||
string PrimaryMode,
|
||||
int Sort,
|
||||
List<Guid> CategoryIds,
|
||||
List<Guid> TagIds
|
||||
);
|
||||
|
||||
public record UpdateContainerRequest(
|
||||
string Slug,
|
||||
string Name,
|
||||
string? Description,
|
||||
string? Keywords,
|
||||
string? NewsText,
|
||||
string? Image,
|
||||
string? Demo,
|
||||
string? FullDemo,
|
||||
string? MiniDemo,
|
||||
string? DemoScriptTag,
|
||||
bool IsPublished,
|
||||
bool IsPremium,
|
||||
bool IsMockup,
|
||||
string PrimaryMode,
|
||||
int Sort,
|
||||
List<Guid> CategoryIds,
|
||||
List<Guid> TagIds
|
||||
);
|
||||
|
||||
public record ContainerListRequest(
|
||||
int Page = 1,
|
||||
int PageSize = 20,
|
||||
string? Search = null,
|
||||
Guid? CategoryId = null,
|
||||
string? TagSlug = null,
|
||||
bool? IsPublished = null,
|
||||
bool? IsPremium = null,
|
||||
string? Mode = null,
|
||||
string? Sort = "sort_date_desc"
|
||||
);
|
||||
|
||||
public record CreateProjectRequest(
|
||||
Guid ContainerId,
|
||||
Guid? ProjectServerId,
|
||||
string Name,
|
||||
string? Description,
|
||||
string? Image,
|
||||
string? FullDemo,
|
||||
string? DemoScriptTag,
|
||||
string? DownloadLink,
|
||||
string? Folder,
|
||||
int OriginalWidth,
|
||||
int OriginalHeight,
|
||||
string? Aspect,
|
||||
decimal ProjectDurationSec,
|
||||
decimal? MinDurationSec,
|
||||
decimal? MaxDurationSec,
|
||||
int FreeFps,
|
||||
string ChooseMode,
|
||||
string Resolution,
|
||||
decimal VipFactor,
|
||||
string RenderAepComp,
|
||||
bool IsPublished,
|
||||
int Sort
|
||||
);
|
||||
|
||||
public record UpdateProjectRequest(
|
||||
string Name,
|
||||
string? Description,
|
||||
string? Image,
|
||||
string? FullDemo,
|
||||
string? DemoScriptTag,
|
||||
string? DownloadLink,
|
||||
string? Folder,
|
||||
int OriginalWidth,
|
||||
int OriginalHeight,
|
||||
string? Aspect,
|
||||
decimal ProjectDurationSec,
|
||||
decimal? MinDurationSec,
|
||||
decimal? MaxDurationSec,
|
||||
int FreeFps,
|
||||
string ChooseMode,
|
||||
string Resolution,
|
||||
decimal VipFactor,
|
||||
string RenderAepComp,
|
||||
string? SharedLayerImage,
|
||||
string? SharedColorsSvg,
|
||||
string? SharedColorPresetsSvg,
|
||||
bool IsPublished,
|
||||
int Sort
|
||||
);
|
||||
|
||||
// ── CMS ──────────────────────────────────────────────────────────────────────
|
||||
|
||||
public record CreateBlogRequest(
|
||||
string Slug,
|
||||
string Title,
|
||||
string? ShortDescription,
|
||||
string Content,
|
||||
string? MetaTitle,
|
||||
string? MetaDescription,
|
||||
string? MetaKeywords,
|
||||
bool IncludeInSiteMap,
|
||||
string? Image,
|
||||
string? Cover,
|
||||
string? AuthorDisplayName,
|
||||
bool IsPublished,
|
||||
DateTime? PublishDate,
|
||||
string Kind = "Blog"
|
||||
);
|
||||
|
||||
public record UpdateBlogRequest(
|
||||
string Slug,
|
||||
string Title,
|
||||
string? ShortDescription,
|
||||
string Content,
|
||||
string? MetaTitle,
|
||||
string? MetaDescription,
|
||||
string? MetaKeywords,
|
||||
bool IncludeInSiteMap,
|
||||
string? Image,
|
||||
string? Cover,
|
||||
string? AuthorDisplayName,
|
||||
bool IsPublished,
|
||||
DateTime? PublishDate
|
||||
);
|
||||
|
||||
public record BlogListRequest(
|
||||
int Page = 1,
|
||||
int PageSize = 20,
|
||||
string? Search = null,
|
||||
bool? IsPublished = null,
|
||||
string Kind = "Blog"
|
||||
);
|
||||
|
||||
public record CreateCommentRequest(
|
||||
Guid? BlogId,
|
||||
Guid? ContainerId,
|
||||
Guid? ParentCommentId,
|
||||
string Content,
|
||||
decimal? Rate
|
||||
);
|
||||
|
||||
public record CreateSlideRequest(
|
||||
string? Keyword,
|
||||
string? Title,
|
||||
string? Image,
|
||||
string? Parameter,
|
||||
string SlideType,
|
||||
DateTime? ExpireDate,
|
||||
int Sort,
|
||||
bool IsActive
|
||||
);
|
||||
|
||||
public record UpdateSlideRequest(
|
||||
string? Keyword,
|
||||
string? Title,
|
||||
string? Image,
|
||||
string? Parameter,
|
||||
string SlideType,
|
||||
DateTime? ExpireDate,
|
||||
int Sort,
|
||||
bool IsActive
|
||||
);
|
||||
|
||||
public record UpsertWebsiteSettingRequest(
|
||||
string Key,
|
||||
string Value,
|
||||
string? Description,
|
||||
bool IsSecret
|
||||
);
|
||||
|
||||
public record CreateFavoriteFolderRequest(string Name, string? Description);
|
||||
public record UpdateFavoriteFolderRequest(string Name, string? Description);
|
||||
public record AddFavoriteContainerRequest(Guid ContainerId, Guid? FolderId, string? Note);
|
||||
Reference in New Issue
Block a user