Make it more complete

This commit is contained in:
2026-04-28 03:21:01 -05:00
parent 74c6d1126e
commit 1052b94a54
34 changed files with 712 additions and 82 deletions
+16 -3
View File
@@ -22,7 +22,7 @@ namespace Tesses.YouTubeDownloader2025Companion
public void Init()
{
conn.Execute("CREATE TABLE IF NOT EXISTS sessions (Id INTEGER PRIMARY KEY AUTOINCREMENT, AccountName TEXT, Key TEXT UNIQUE, Expires INTEGER);");
conn.Execute("CREATE TABLE IF NOT EXISTS sessions (Id INTEGER PRIMARY KEY AUTOINCREMENT, AccountName TEXT, Key TEXT UNIQUE, Expires INTEGER, Flags INTEGER);");
conn.Execute("CREATE TABLE IF NOT EXISTS song_videos (Id INTEGER PRIMARY KEY AUTOINCREMENT, SongId TEXT UNIQUE, VideoId TEXT UNIQUE, VideoTitle TEXT);");
conn.Execute("CREATE TABLE IF NOT EXISTS songs (Id INTEGER PRIMARY KEY AUTOINCREMENT, SongId TEXT UNIQUE, SongName TEXT);");
conn.Execute("CREATE TABLE IF NOT EXISTS artists (Id INTEGER PRIMARY KEY AUTOINCREMENT, ArtistId TEXT UNIQUE, ArtistName TEXT, ArtistDisambiguation TEXT);");
@@ -87,14 +87,15 @@ namespace Tesses.YouTubeDownloader2025Companion
yield return ent;
}
}
public async Task<Session> CreateSessionTokenAsync(string username, bool expires = true)
public async Task<Session> CreateSessionTokenAsync(string username, long flags, bool expires = true)
{
Session session = new Session();
session.AccountName = username;
session.Expires = expires ? Program.NowEpoch + Expires : 0;
session.Flags = flags;
session.Key = Convert.ToBase64String(RandomNumberGenerator.GetBytes(32));
await conn.ExecuteAsync("INSERT INTO sessions (AccountName,Key,Expires) VALUES (@AccountName,@Key,@Expires);", session);
await conn.ExecuteAsync("INSERT INTO sessions (AccountName,Key,Flags,Expires) VALUES (@AccountName,@Key,@Flags,@Expires);", session);
return session;
}
@@ -226,6 +227,16 @@ namespace Tesses.YouTubeDownloader2025Companion
ArtistId = artistId
}));
}
public async Task<IEnumerable<Song>> GetUnavailableSongsAsync(long offset=0, long count=20)
{
//SELECT * FROM songs s WHERE NOT EXISTS (SELECT * FROM song_videos v WHERE v.SongId = s.SongId);
return await conn.QueryAsync<Song>("SELECT * FROM songs s WHERE NOT EXISTS (SELECT * FROM song_videos v WHERE v.SongId = s.SongId) LIMIT @Count OFFSET @Offset;", new DynamicParameters(new
{
Offset = offset,
Count = count
}));
}
public async Task<IEnumerable<Album>> GetAlbumsAsync(string q = "", long offset = 0, long count = 20)
{
return await conn.QueryAsync<Album>("SELECT * FROM albums WHERE AlbumName LIKE @Query ORDER BY AlbumReleaseDate, Id ASC LIMIT @Count OFFSET @Offset;", new DynamicParameters(new
@@ -323,6 +334,8 @@ namespace Tesses.YouTubeDownloader2025Companion
public string Key { get; set; } = "";
public long Flags {get;set;}
public long Expires { get; set; }
}
}