DigiKam4 Archive
Change to only need the one json file and changed AppSettings to not need a binder file Editorconfig for no new line before open braces Nuget package bumps Database lowest-version-history
This commit is contained in:
@ -1,129 +1,176 @@
|
||||
namespace ImmichToSlideshow.Services;
|
||||
|
||||
internal static class CommandText
|
||||
{
|
||||
internal static class CommandText {
|
||||
|
||||
internal static string GetColumns()
|
||||
{ // cSpell:disable
|
||||
List<string> results = new();
|
||||
// results.Add(" SELECT COALESCE(SUM(checksum_failures), 0) ");
|
||||
// results.Add(" FROM pg_stat_database ");
|
||||
// results.Add(" SELECT json_agg(t) ");
|
||||
// results.Add(" FROM information_schema.tables t ");
|
||||
// results.Add(" WHERE table_schema= 'public' ");
|
||||
// results.Add(" AND table_type= 'BASE TABLE' ");
|
||||
results.Add(" SELECT json_agg(c) ");
|
||||
results.Add(" FROM information_schema.columns c ");
|
||||
// results.Add(" WHERE table_name = 'assets' ");
|
||||
// results.Add(" WHERE table_name = 'libraries' ");
|
||||
results.Add(" WHERE table_name = 'asset_files' ");
|
||||
internal static string GetColumns() { // cSpell:disable
|
||||
List<string> results = [
|
||||
// " SELECT COALESCE(SUM(checksum_failures), 0) ",
|
||||
// " FROM pg_stat_database ",
|
||||
// " SELECT json_agg(t) ",
|
||||
// " FROM information_schema.tables t ",
|
||||
// " WHERE table_schema= 'public' ",
|
||||
// " AND table_type= 'BASE TABLE' ",
|
||||
" SELECT json_agg(c) ",
|
||||
" FROM information_schema.columns c ",
|
||||
// " WHERE table_name = 'assets' ",
|
||||
// " WHERE table_name = 'libraries' ",
|
||||
" WHERE table_name = 'asset_files'; "
|
||||
];
|
||||
return string.Join(Environment.NewLine, results);
|
||||
} // cSpell:enable
|
||||
|
||||
internal static string GetOwnerIdActiveImage()
|
||||
{ // cSpell:disable
|
||||
List<string> results = new();
|
||||
results.Add(" SELECT json_agg(j) ");
|
||||
results.Add(" FROM ( ");
|
||||
results.Add(" SELECT a.\"ownerId\" ");
|
||||
results.Add(" FROM assets a ");
|
||||
results.Add(" WHERE a.\"status\" = 'active' ");
|
||||
results.Add(" AND a.\"type\" = 'IMAGE' ");
|
||||
results.Add(" GROUP");
|
||||
results.Add(" BY a.\"ownerId\" ");
|
||||
results.Add(" ) j ");
|
||||
internal static string GetOwnerIdActiveImage(float lowestVersionHistory) { // cSpell:disable
|
||||
List<string> results = [
|
||||
" SELECT json_agg(j) ",
|
||||
" FROM ( ",
|
||||
" SELECT a.\"ownerId\" "
|
||||
];
|
||||
if (lowestVersionHistory <= 1.129) {
|
||||
results.Add(" FROM assets a ");
|
||||
} else {
|
||||
results.Add(" FROM public.asset a ");
|
||||
}
|
||||
results.AddRange([
|
||||
" WHERE a.\"status\" = 'active' ",
|
||||
" AND a.\"type\" = 'IMAGE' ",
|
||||
" GROUP",
|
||||
" BY a.\"ownerId\" ",
|
||||
" ) j; "
|
||||
]);
|
||||
return string.Join(Environment.NewLine, results);
|
||||
} // cSpell:enable
|
||||
|
||||
internal static string GetAssetActiveImagePreviewNotDuplicate(string[] filterTags)
|
||||
{ // cSpell:disable
|
||||
List<string> results = new();
|
||||
results.Add(" SELECT json_agg(j) ");
|
||||
results.Add(" FROM ( ");
|
||||
results.Add(" SELECT a.\"id\" ");
|
||||
results.Add(" , a.\"deviceAssetId\" ");
|
||||
// results.Add(" , a.\"ownerId\" ");
|
||||
// results.Add(" , a.\"deviceId\" ");
|
||||
// results.Add(" , a.\"type\" ");
|
||||
results.Add(" , a.\"originalPath\" ");
|
||||
// results.Add(" , a.\"fileCreatedAt\" ");
|
||||
// results.Add(" , a.\"fileModifiedAt\" ");
|
||||
// results.Add(" , a.\"isFavorite\" ");
|
||||
// results.Add(" , a.\"duration\" ");
|
||||
// results.Add(" , a.\"encodedVideoPath\" ");
|
||||
// results.Add(" , a.\"checksum\" ");
|
||||
// results.Add(" , a.\"isVisible\" ");
|
||||
// results.Add(" , a.\"livePhotoVideoId\" ");
|
||||
// results.Add(" , a.\"updatedAt\" ");
|
||||
// results.Add(" , a.\"createdAt\" ");
|
||||
// results.Add(" , a.\"isArchived\" ");
|
||||
results.Add(" , a.\"originalFileName\" ");
|
||||
// results.Add(" , a.\"sidecarPath\" ");
|
||||
// results.Add(" , a.\"thumbhash\" ");
|
||||
// results.Add(" , a.\"isOffline\" ");
|
||||
// results.Add(" , a.\"libraryId\" ");
|
||||
// results.Add(" , a.\"isExternal\" ");
|
||||
// results.Add(" , a.\"deletedAt\" ");
|
||||
// results.Add(" , a.\"localDateTime\" ");
|
||||
// results.Add(" , a.\"stackId\" ");
|
||||
results.Add(" , a.\"duplicateId\" ");
|
||||
// results.Add(" , a.\"status\" ");
|
||||
results.Add(" , f.\"path\" ");
|
||||
results.Add(" FROM assets a ");
|
||||
results.Add(" INNER ");
|
||||
results.Add(" JOIN asset_files f ");
|
||||
results.Add(" ON a.\"id\" = f.\"assetId\" ");
|
||||
results.Add(" WHERE a.\"status\" = 'active' ");
|
||||
results.Add(" AND a.\"type\" = 'IMAGE' ");
|
||||
results.Add(" AND f.\"type\" = 'preview' ");
|
||||
results.Add(" AND a.\"duplicateId\" is null ");
|
||||
results.Add(" AND a.\"id\" not in ( ");
|
||||
results.Add(" SELECT \"assetsId\" ");
|
||||
results.Add(" FROM tag_asset g ");
|
||||
results.Add(" JOIN tags t ");
|
||||
results.Add(" ON g.\"tagsId\" = t.\"id\" ");
|
||||
results.Add($" WHERE t.\"value\" in ('{string.Join("','", filterTags)}') ");
|
||||
results.Add(" ) ");
|
||||
results.Add(" AND a.\"isExternal\" = true ");
|
||||
results.Add(" AND a.\"isOffline\" = false ");
|
||||
results.Add(" AND a.\"ownerId\" = @ownerId ");
|
||||
results.Add(" ) j ");
|
||||
internal static string GetAssetActiveImagePreviewNotDuplicate(float lowestVersionHistory, string[] filterTags) { // cSpell:disable
|
||||
List<string> results = [
|
||||
" SELECT json_agg(j) ",
|
||||
" FROM ( ",
|
||||
" SELECT a.\"id\" ",
|
||||
" , a.\"deviceAssetId\" ",
|
||||
// " , a.\"ownerId\" ",
|
||||
// " , a.\"deviceId\" ",
|
||||
// " , a.\"type\" ",
|
||||
" , a.\"originalPath\" ",
|
||||
// " , a.\"fileCreatedAt\" ",
|
||||
// " , a.\"fileModifiedAt\" ",
|
||||
// " , a.\"isFavorite\" ",
|
||||
// " , a.\"duration\" ",
|
||||
// " , a.\"encodedVideoPath\" ",
|
||||
// " , a.\"checksum\" ",
|
||||
// " , a.\"isVisible\" ",
|
||||
// " , a.\"livePhotoVideoId\" ",
|
||||
// " , a.\"updatedAt\" ",
|
||||
// " , a.\"createdAt\" ",
|
||||
// " , a.\"isArchived\" ",
|
||||
" , a.\"originalFileName\" ",
|
||||
// " , a.\"sidecarPath\" ",
|
||||
// " , a.\"thumbhash\" ",
|
||||
// " , a.\"isOffline\" ",
|
||||
// " , a.\"libraryId\" ",
|
||||
// " , a.\"isExternal\" ",
|
||||
// " , a.\"deletedAt\" ",
|
||||
// " , a.\"localDateTime\" ",
|
||||
// " , a.\"stackId\" ",
|
||||
" , a.\"duplicateId\" ",
|
||||
// " , a.\"status\" ",
|
||||
" , f.\"path\" "
|
||||
];
|
||||
if (lowestVersionHistory <= 1.129) {
|
||||
results.Add(" FROM assets a ");
|
||||
} else {
|
||||
results.Add(" FROM public.asset a ");
|
||||
}
|
||||
results.AddRange(" INNER ");
|
||||
if (lowestVersionHistory <= 1.129) {
|
||||
results.Add(" JOIN asset_files f ");
|
||||
} else {
|
||||
results.Add(" JOIN public.asset_file f ");
|
||||
}
|
||||
results.AddRange([
|
||||
" ON a.\"id\" = f.\"assetId\" ",
|
||||
" WHERE a.\"status\" = 'active' ",
|
||||
" AND a.\"type\" = 'IMAGE' ",
|
||||
" AND f.\"type\" = 'preview' ",
|
||||
" AND a.\"duplicateId\" is null ",
|
||||
" AND a.\"id\" not in ( ",
|
||||
" SELECT \"assetsId\" "
|
||||
]);
|
||||
if (lowestVersionHistory <= 1.129) {
|
||||
results.Add(" FROM tag_asset g ");
|
||||
} else {
|
||||
results.Add(" FROM public.tag_asset g ");
|
||||
}
|
||||
if (lowestVersionHistory <= 1.129) {
|
||||
results.Add(" JOIN tags t ");
|
||||
} else {
|
||||
results.Add(" JOIN public.tag t ");
|
||||
}
|
||||
results.AddRange([
|
||||
" ON g.\"tagsId\" = t.\"id\" ",
|
||||
$" WHERE t.\"value\" in ('{string.Join("','", filterTags)}') ",
|
||||
" ) ",
|
||||
" AND a.\"isExternal\" = true ",
|
||||
" AND a.\"isOffline\" = false ",
|
||||
" AND a.\"ownerId\" = @ownerId ",
|
||||
" ) j; "
|
||||
]);
|
||||
return string.Join(Environment.NewLine, results);
|
||||
} // cSpell:enable
|
||||
|
||||
internal static string SetAssetArchived(string deviceAssetIds)
|
||||
{ // cSpell:disable
|
||||
List<string> results = new();
|
||||
results.Add(" INSERT INTO tag_asset ");
|
||||
results.Add(" (\"assetsId\", \"tagsId\") ");
|
||||
results.Add(" SELECT a.\"id\", @tagsId::uuid ");
|
||||
results.Add(" FROM assets a ");
|
||||
results.Add(" WHERE a.\"type\" = 'IMAGE' ");
|
||||
results.Add(" AND a.\"ownerId\" = @ownerId ");
|
||||
results.Add(" AND a.\"deviceAssetId\" in ( ");
|
||||
results.Add(deviceAssetIds);
|
||||
results.Add(" ) ");
|
||||
results.Add(" AND a.\"id\" not in ( ");
|
||||
results.Add(" SELECT \"id\" ");
|
||||
results.Add(" FROM assets b ");
|
||||
internal static string SetAssetArchived(float lowestVersionHistory, string deviceAssetIds) { // cSpell:disable
|
||||
List<string> results = [
|
||||
" INSERT INTO tag_asset ",
|
||||
" (\"assetsId\", \"tagsId\") ",
|
||||
" SELECT a.\"id\", @tagsId::uuid "
|
||||
];
|
||||
if (lowestVersionHistory <= 1.129) {
|
||||
results.Add(" FROM assets a ");
|
||||
} else {
|
||||
results.Add(" FROM public.asset a ");
|
||||
}
|
||||
results.AddRange([
|
||||
" WHERE a.\"type\" = 'IMAGE' ",
|
||||
" AND a.\"ownerId\" = @ownerId ",
|
||||
" AND a.\"deviceAssetId\" in ( ",
|
||||
deviceAssetIds,
|
||||
" ) ",
|
||||
" AND a.\"id\" not in ( ",
|
||||
" SELECT \"id\" "
|
||||
]);
|
||||
if (lowestVersionHistory <= 1.129) {
|
||||
results.Add(" FROM assets b ");
|
||||
} else {
|
||||
results.Add(" FROM public.asset b ");
|
||||
}
|
||||
results.Add(" INNER ");
|
||||
results.Add(" JOIN tag_asset t ");
|
||||
results.Add(" ON b.\"id\" = t.\"assetsId\" ");
|
||||
results.Add(" WHERE t.\"tagsId\" = @tagsId::uuid ");
|
||||
results.Add(" AND b.\"deviceAssetId\" in ( ");
|
||||
results.Add(deviceAssetIds);
|
||||
results.Add(" ) ");
|
||||
results.Add(" ) ");
|
||||
if (lowestVersionHistory <= 1.129) {
|
||||
results.Add(" JOIN tag_asset t ");
|
||||
} else {
|
||||
results.Add(" JOIN public.tag_asset t ");
|
||||
}
|
||||
results.AddRange([
|
||||
" ON b.\"id\" = t.\"assetsId\" ",
|
||||
" WHERE t.\"tagsId\" = @tagsId::uuid ",
|
||||
" AND b.\"deviceAssetId\" in ( ",
|
||||
deviceAssetIds,
|
||||
" ) ",
|
||||
" ); "
|
||||
]);
|
||||
return string.Join(Environment.NewLine, results);
|
||||
} // cSpell:enable
|
||||
|
||||
internal static string GetArchivedTag()
|
||||
{ // cSpell:disable
|
||||
List<string> results = new();
|
||||
results.Add(" SELECT json_agg(t) ");
|
||||
results.Add(" FROM tags t ");
|
||||
results.Add($" WHERE t.\"value\" = @value ");
|
||||
results.Add(" AND t.\"userId\" = @userId ");
|
||||
internal static string GetArchivedTag(float lowestVersionHistory) { // cSpell:disable
|
||||
List<string> results = [
|
||||
" SELECT json_agg(t) "
|
||||
];
|
||||
if (lowestVersionHistory <= 1.129) {
|
||||
results.Add(" FROM tags t ");
|
||||
} else {
|
||||
results.Add(" FROM public.tag t ");
|
||||
}
|
||||
results.AddRange([
|
||||
" WHERE t.\"value\" = @value ",
|
||||
" AND t.\"userId\" = @userId; "
|
||||
]);
|
||||
return string.Join(Environment.NewLine, results);
|
||||
} // cSpell:enable
|
||||
|
||||
|
Reference in New Issue
Block a user