Portfolio.Web
1.0.0.0
.NET, Blazor, WPF와 서비스 운영 경험을 프로젝트·이력·기술 스택 단위로 보여주는 개발자 포트폴리오입니다.
Toggle main menu visibility
로딩중...
검색중...
일치하는것 없음
JsonPortfolioTenantStore.cs
이 파일의 문서화 페이지로 가기
1
using
System.IO;
2
using
System.Text.Json;
3
using
PortfolioApp.Models
;
4
5
namespace
PortfolioApp.Services
;
6
15
public
class
JsonPortfolioTenantStore
:
IPortfolioTenantStore
16
{
25
private
readonly
string
_root
;
34
private
static
readonly JsonSerializerOptions
_json
=
new
() { WriteIndented =
true
};
35
52
public
JsonPortfolioTenantStore
(
PortfolioOptions
opts)
53
{
54
_root
= opts.
ResolvedDataPath
;
55
Directory.CreateDirectory(
_root
);
56
}
57
82
private
string
ConfigPath
(
string
slug) => Path.Combine(
_root
, slug,
"config.json"
);
83
100
public
async Task<List<PortfolioConfig>>
GetAllAsync
()
101
{
102
var list =
new
List<PortfolioConfig>();
103
if
(!Directory.Exists(
_root
))
return
list;
104
foreach
(var dir
in
Directory.GetDirectories(
_root
))
105
{
106
var cfg = Path.Combine(dir,
"config.json"
);
107
if
(!File.Exists(cfg))
continue
;
108
try
109
{
110
var json = await File.ReadAllTextAsync(cfg);
111
var obj = JsonSerializer.Deserialize<
PortfolioConfig
>(json);
112
if
(obj !=
null
) list.Add(obj);
113
}
114
catch
{ }
115
}
116
return
list;
117
}
118
143
public
async Task<PortfolioConfig?>
GetAsync
(
string
slug)
144
{
145
var path =
ConfigPath
(slug);
146
if
(!File.Exists(path))
return
null
;
147
var json = await File.ReadAllTextAsync(path);
148
return
JsonSerializer.Deserialize<
PortfolioConfig
>(json);
149
}
150
175
public
async Task
SaveAsync
(
PortfolioConfig
config)
176
{
177
var dir = Path.Combine(
_root
, config.
Slug
);
178
Directory.CreateDirectory(Path.Combine(dir,
"projects"
));
179
Directory.CreateDirectory(Path.Combine(dir,
"media"
));
180
Directory.CreateDirectory(Path.Combine(dir,
"contacts"
));
181
var json = JsonSerializer.Serialize(config,
_json
);
182
await File.WriteAllTextAsync(
ConfigPath
(config.
Slug
), json);
183
}
184
209
public
Task
DeleteAsync
(
string
slug)
210
{
211
var dir = Path.Combine(
_root
, slug);
212
if
(Directory.Exists(dir))
213
Directory.Delete(dir, recursive:
true
);
214
return
Task.CompletedTask;
215
}
216
}
PortfolioApp.Models
Definition
ContactMessage.cs:1
PortfolioApp.Services
Definition
GhostAccountCleanupService.cs:4
PortfolioApp.Models.PortfolioConfig
Definition
PortfolioConfig.cs:12
PortfolioApp.Models.PortfolioConfig.Slug
string Slug
Definition
PortfolioConfig.cs:21
PortfolioApp.Services.IPortfolioTenantStore
Definition
IPortfolioTenantStore.cs:14
PortfolioApp.Services.JsonPortfolioTenantStore.SaveAsync
async Task SaveAsync(PortfolioConfig config)
Definition
JsonPortfolioTenantStore.cs:175
PortfolioApp.Services.JsonPortfolioTenantStore._root
readonly string _root
Definition
JsonPortfolioTenantStore.cs:25
PortfolioApp.Services.JsonPortfolioTenantStore.GetAsync
async Task< PortfolioConfig?> GetAsync(string slug)
Definition
JsonPortfolioTenantStore.cs:143
PortfolioApp.Services.JsonPortfolioTenantStore.GetAllAsync
async Task< List< PortfolioConfig > > GetAllAsync()
Definition
JsonPortfolioTenantStore.cs:100
PortfolioApp.Services.JsonPortfolioTenantStore._json
static readonly JsonSerializerOptions _json
Definition
JsonPortfolioTenantStore.cs:34
PortfolioApp.Services.JsonPortfolioTenantStore.DeleteAsync
Task DeleteAsync(string slug)
Definition
JsonPortfolioTenantStore.cs:209
PortfolioApp.Services.JsonPortfolioTenantStore.ConfigPath
string ConfigPath(string slug)
Definition
JsonPortfolioTenantStore.cs:82
PortfolioApp.Services.JsonPortfolioTenantStore.JsonPortfolioTenantStore
JsonPortfolioTenantStore(PortfolioOptions opts)
Definition
JsonPortfolioTenantStore.cs:52
PortfolioApp.Services.PortfolioOptions
Definition
PortfolioOptions.cs:15
PortfolioApp.Services.PortfolioOptions.ResolvedDataPath
string ResolvedDataPath
Definition
PortfolioOptions.cs:43
Services
JsonPortfolioTenantStore.cs
다음에 의해 생성됨 :
1.17.0