1
1
using System ;
2
2
using System . Collections . Generic ;
3
+ using System . IO ;
3
4
using FishFM . Models ;
4
5
using LiteDB ;
5
6
using Newtonsoft . Json ;
@@ -10,7 +11,8 @@ public class DbHelper
10
11
{
11
12
private const string FmSongTable = "t_fm_songs" ;
12
13
private const string LikeTable = "t_liked_songs" ;
13
- private static Random Rdm = new Random ( ) ;
14
+ private static readonly string DbPath = Path . Combine ( AppDomain . CurrentDomain . BaseDirectory , "MyFM.db" ) ;
15
+ private static readonly Random Rdm = new Random ( ) ;
14
16
15
17
public static bool UpsertSongs ( List < SongResult > list , string date , string type )
16
18
{
@@ -19,14 +21,14 @@ public static bool UpsertSongs(List<SongResult> list, string date, string type)
19
21
{
20
22
dbSongs . Add ( songResult . ToDbSong ( type , date ) ) ;
21
23
}
22
- using var db = new LiteDatabase ( "./MyFM.db" ) ;
24
+ using var db = new LiteDatabase ( DbPath ) ;
23
25
var col = db . GetCollection < DbSong > ( FmSongTable ) ;
24
26
return col . Upsert ( dbSongs ) >= 0 ;
25
27
}
26
28
27
29
public static List < SongResult > GetSongs ( string date , string type )
28
30
{
29
- using var db = new LiteDatabase ( "./MyFM.db" ) ;
31
+ using var db = new LiteDatabase ( DbPath ) ;
30
32
var col = db . GetCollection < DbSong > ( FmSongTable ) ;
31
33
var list = col . Query ( )
32
34
. Where ( s => s . FmType == type && ( string . IsNullOrEmpty ( date ) || s . AddDate == date ) ) . ToList ( ) ;
@@ -44,7 +46,7 @@ public static List<SongResult> GetSongs(string date, string type)
44
46
45
47
public static SongResult ? GetLastSong ( string type )
46
48
{
47
- using var db = new LiteDatabase ( "./MyFM.db" ) ;
49
+ using var db = new LiteDatabase ( DbPath ) ;
48
50
var col = db . GetCollection < DbSong > ( FmSongTable ) ;
49
51
var lastSong = col . Query ( )
50
52
. Where ( s => s . FmType == type ) . OrderByDescending ( s=> s . AddDate ) . Limit ( 1 ) . FirstOrDefault ( ) ;
@@ -57,7 +59,7 @@ public static List<SongResult> GetSongs(string date, string type)
57
59
58
60
public static List < SongResult > GetSongsByIds ( List < string > ids )
59
61
{
60
- using var db = new LiteDatabase ( "./MyFM.db" ) ;
62
+ using var db = new LiteDatabase ( DbPath ) ;
61
63
var col = db . GetCollection < DbSong > ( FmSongTable ) ;
62
64
var list = col . Query ( )
63
65
. Where ( s => ids . Contains ( s . Id ) ) . ToList ( ) ;
@@ -75,7 +77,7 @@ public static List<SongResult> GetSongsByIds(List<string> ids)
75
77
76
78
public static List < SongResult > GetRandomSongs ( )
77
79
{
78
- using var db = new LiteDatabase ( "./MyFM.db" ) ;
80
+ using var db = new LiteDatabase ( DbPath ) ;
79
81
var col = db . GetCollection < DbSong > ( FmSongTable ) ;
80
82
var offset = Rdm . Next ( 0 , col . Count ( ) ) ;
81
83
var list = col . Query ( )
@@ -94,14 +96,14 @@ public static List<SongResult> GetRandomSongs()
94
96
95
97
public static void LikeSong ( SongResult songResult )
96
98
{
97
- using var db = new LiteDatabase ( "./MyFM.db" ) ;
99
+ using var db = new LiteDatabase ( DbPath ) ;
98
100
var col = db . GetCollection < LikedSong > ( LikeTable ) ;
99
101
col . Upsert ( new LikedSong ( ) { Id = songResult . ToDbSong ( "" , "" ) . Id } ) ;
100
102
}
101
103
102
104
public static void DislikeSong ( SongResult songResult )
103
105
{
104
- using var db = new LiteDatabase ( "./MyFM.db" ) ;
106
+ using var db = new LiteDatabase ( DbPath ) ;
105
107
var col = db . GetCollection < LikedSong > ( LikeTable ) ;
106
108
col . Delete ( songResult . ToDbSong ( "" , "" ) . Id ) ;
107
109
}
@@ -112,14 +114,14 @@ public static bool IsSongLiked(SongResult? songResult)
112
114
{
113
115
return false ;
114
116
}
115
- using var db = new LiteDatabase ( "./MyFM.db" ) ;
117
+ using var db = new LiteDatabase ( DbPath ) ;
116
118
var col = db . GetCollection < LikedSong > ( LikeTable ) ;
117
119
return col . Exists ( x=> x . Id == songResult . ToDbSong ( "" , "" ) . Id ) ;
118
120
}
119
121
120
122
public static List < string > GetAllLikedSong ( )
121
123
{
122
- using var db = new LiteDatabase ( "./MyFM.db" ) ;
124
+ using var db = new LiteDatabase ( DbPath ) ;
123
125
var col = db . GetCollection < LikedSong > ( LikeTable ) ;
124
126
return col . Query ( ) . Select ( x => x . Id ) . ToList ( ) ;
125
127
}
0 commit comments