Insert into asset tag instead of updating is archived field

Convert to Podman
This commit is contained in:
2025-06-15 18:10:52 -07:00
parent ac4e4c277d
commit ab90adee42
10 changed files with 330 additions and 135 deletions

View File

@ -0,0 +1,130 @@
namespace ImmichToSlideshow.Services;
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' ");
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 ");
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 ");
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 ");
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(" ) ");
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 ");
return string.Join(Environment.NewLine, results);
} // cSpell:enable
}