Families.Web 1.0.0.0
사진, 동영상, 글, 댓글과 반응을 가족끼리만 공유하는 비공개 앨범·타임라인 서비스입니다.
로딩중...
검색중...
일치하는것 없음
FamiliesApp.Services.JsonAlbumStore 클래스 참조sealed

더 자세히 ...

FamiliesApp.Services.JsonAlbumStore에 대한 상속 다이어그램 :
FamiliesApp.Services.JsonAlbumStore에 대한 협력 다이어그램:

Public 멤버 함수

 JsonAlbumStore (IFamilyTenantStore tenants)
async Task< IReadOnlyList< AlbumInfo > > GetAllAsync (string slug, CancellationToken ct=default)
async Task< AlbumInfo?> GetAsync (string slug, string albumId, CancellationToken ct=default)
async Task SaveAsync (string slug, AlbumInfo album, CancellationToken ct=default)
Task DeleteAsync (string slug, string albumId, CancellationToken ct=default)

Private 멤버 함수

string AlbumsDir (string slug)
string AlbumPath (string slug, string albumId)

정적 Private 멤버 함수

static string Sanitize (string id)

Private 속성

readonly IFamilyTenantStore _tenants

정적 Private 속성

static readonly SemaphoreSlim _gate = new(1, 1)
static readonly JsonSerializerOptions _jsonOpts

상세한 설명

Json Album Store 기능과 관련 상태를 캡슐화합니다.

JsonAlbumStore.cs 파일의 15 번째 라인에서 정의되었습니다.

생성자 & 소멸자 문서화

◆ JsonAlbumStore()

FamiliesApp.Services.JsonAlbumStore.JsonAlbumStore ( IFamilyTenantStore tenants)
inline

지정한 설정으로 JsonAlbumStore 클래스의 새 인스턴스를 초기화합니다.

매개변수
tenantstenants에 사용할 IFamilyTenantStore 값입니다.

JsonAlbumStore.cs 파일의 66 번째 라인에서 정의되었습니다.

66=> _tenants = tenants;

다음을 참조함 : _tenants.

멤버 함수 문서화

◆ AlbumPath()

string FamiliesApp.Services.JsonAlbumStore.AlbumPath ( string slug,
string albumId )
inlineprivate

Album Path 작업을 수행합니다.

매개변수
slugslug에 사용할 string 값입니다.
albumIdalbum Id에 사용할 string 값입니다.
반환값
Album Path 작업에서 생성한 string 결과입니다.

JsonAlbumStore.cs 파일의 127 번째 라인에서 정의되었습니다.

127 =>
128 Path.Combine(AlbumsDir(slug), $"{Sanitize(albumId)}.json");

다음에 의해서 참조됨 : DeleteAsync(), GetAsync(), SaveAsync().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ AlbumsDir()

string FamiliesApp.Services.JsonAlbumStore.AlbumsDir ( string slug)
inlineprivate

Albums Dir 작업을 수행합니다.

매개변수
slugslug에 사용할 string 값입니다.
반환값
Albums Dir 작업에서 생성한 string 결과입니다.

JsonAlbumStore.cs 파일의 92 번째 라인에서 정의되었습니다.

92 =>
93 Path.Combine(_tenants.GetTenantDataPath(slug), "albums");

다음을 참조함 : _tenants.

다음에 의해서 참조됨 : GetAllAsync(), SaveAsync().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ DeleteAsync()

Task FamiliesApp.Services.JsonAlbumStore.DeleteAsync ( string slug,
string albumId,
CancellationToken ct = default )
inline

Delete Async 작업을 수행합니다.

매개변수
slugslug에 사용할 string 값입니다.
albumIdalbum Id에 사용할 string 값입니다.
ct취소 요청을 감시하는 토큰입니다.
반환값
Delete Async 작업에서 생성한 Task 결과입니다.

FamiliesApp.Services.IAlbumStore를 구현.

JsonAlbumStore.cs 파일의 338 번째 라인에서 정의되었습니다.

339 {
340 var path = AlbumPath(slug, albumId);
341 if (File.Exists(path)) File.Delete(path);
342 return Task.CompletedTask;
343 }

다음을 참조함 : AlbumPath().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ GetAllAsync()

async Task< IReadOnlyList< AlbumInfo > > FamiliesApp.Services.JsonAlbumStore.GetAllAsync ( string slug,
CancellationToken ct = default )
inline

All Async 값을 가져옵니다.

매개변수
slugslug에 사용할 string 값입니다.
ct취소 요청을 감시하는 토큰입니다.
반환값
Get All Async 작업에서 생성한 Task<IReadOnlyList<AlbumInfo>> 결과입니다.

FamiliesApp.Services.IAlbumStore를 구현.

JsonAlbumStore.cs 파일의 162 번째 라인에서 정의되었습니다.

163 {
164 var dir = AlbumsDir(slug);
165 if (!Directory.Exists(dir)) return [];
166
167 var list = new List<AlbumInfo>();
168 foreach (var file in Directory.GetFiles(dir, "*.json"))
169 {
170 await _gate.WaitAsync(ct).ConfigureAwait(false);
171 try
172 {
173 await using var fs = File.OpenRead(file);
174 var a = await JsonSerializer.DeserializeAsync<AlbumInfo>(fs, _jsonOpts, ct).ConfigureAwait(false);
175 if (a != null) list.Add(a);
176 }
177 finally { _gate.Release(); }
178 }
179 return list.OrderBy(a => a.SortOrder == 0 ? int.MaxValue : a.SortOrder)
180 .ThenBy(a => a.CreatedAt)
181 .ToList();
182 }

다음을 참조함 : _gate, _jsonOpts, AlbumsDir().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ GetAsync()

async Task< AlbumInfo?> FamiliesApp.Services.JsonAlbumStore.GetAsync ( string slug,
string albumId,
CancellationToken ct = default )
inline

Async 값을 가져옵니다.

매개변수
slugslug에 사용할 string 값입니다.
albumIdalbum Id에 사용할 string 값입니다.
ct취소 요청을 감시하는 토큰입니다.
반환값
Get Async 작업에서 생성한 Task<AlbumInfo?> 결과입니다.

FamiliesApp.Services.IAlbumStore를 구현.

JsonAlbumStore.cs 파일의 224 번째 라인에서 정의되었습니다.

225 {
226 var path = AlbumPath(slug, albumId);
227 if (!File.Exists(path)) return null;
228
229 await _gate.WaitAsync(ct).ConfigureAwait(false);
230 try
231 {
232 await using var fs = File.OpenRead(path);
233 return await JsonSerializer.DeserializeAsync<AlbumInfo>(fs, _jsonOpts, ct).ConfigureAwait(false);
234 }
235 finally { _gate.Release(); }
236 }

다음을 참조함 : _gate, _jsonOpts, AlbumPath().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ Sanitize()

string FamiliesApp.Services.JsonAlbumStore.Sanitize ( string id)
inlinestaticprivate

Sanitize 작업을 수행합니다.

매개변수
idid에 사용할 string 값입니다.
반환값
Sanitize 작업에서 생성한 string 결과입니다.

JsonAlbumStore.cs 파일의 369 번째 라인에서 정의되었습니다.

369 =>
370 string.Concat(id.Split(Path.GetInvalidFileNameChars()));

◆ SaveAsync()

async Task FamiliesApp.Services.JsonAlbumStore.SaveAsync ( string slug,
AlbumInfo album,
CancellationToken ct = default )
inline

Async 데이터를 저장합니다.

매개변수
slugslug에 사용할 string 값입니다.
albumalbum에 사용할 AlbumInfo 값입니다.
ct취소 요청을 감시하는 토큰입니다.
반환값
Save Async 작업에서 생성한 Task 결과입니다.

FamiliesApp.Services.IAlbumStore를 구현.

JsonAlbumStore.cs 파일의 278 번째 라인에서 정의되었습니다.

279 {
280 var dir = AlbumsDir(slug);
281 Directory.CreateDirectory(dir);
282
283 var path = AlbumPath(slug, album.Id);
284 var tmp = path + ".tmp";
285
286 await _gate.WaitAsync(ct).ConfigureAwait(false);
287 try
288 {
289 await using (var fs = File.Create(tmp))
290 await JsonSerializer.SerializeAsync(fs, album, _jsonOpts, ct).ConfigureAwait(false);
291
292 File.Copy(tmp, path, overwrite: true);
293 File.Delete(tmp);
294 }
295 finally { _gate.Release(); }
296 }

다음을 참조함 : _gate, _jsonOpts, AlbumPath(), AlbumsDir(), FamiliesApp.Models.AlbumInfo.Id.

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

멤버 데이터 문서화

◆ _gate

readonly SemaphoreSlim FamiliesApp.Services.JsonAlbumStore._gate = new(1, 1)
staticprivate

gate 값을 보관합니다.

JsonAlbumStore.cs 파일의 34 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : GetAllAsync(), GetAsync(), SaveAsync().

◆ _jsonOpts

readonly JsonSerializerOptions FamiliesApp.Services.JsonAlbumStore._jsonOpts
staticprivate
초기값:
= new()
{
WriteIndented = true,
PropertyNameCaseInsensitive = true
}

json Opts 값을 보관합니다.

JsonAlbumStore.cs 파일의 44 번째 라인에서 정의되었습니다.

45 {
46 WriteIndented = true,
47 PropertyNameCaseInsensitive = true
48 };

다음에 의해서 참조됨 : GetAllAsync(), GetAsync(), SaveAsync().

◆ _tenants

readonly IFamilyTenantStore FamiliesApp.Services.JsonAlbumStore._tenants
private

tenants 값을 보관합니다.

JsonAlbumStore.cs 파일의 25 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : AlbumsDir(), JsonAlbumStore().


이 클래스에 대한 문서화 페이지는 다음의 파일로부터 생성되었습니다.: