Skip to content

Commit

Permalink
Minor Improvements
Browse files Browse the repository at this point in the history
  • Loading branch information
SuhasDissa committed Jan 10, 2023
1 parent e099c62 commit c9a2e1f
Show file tree
Hide file tree
Showing 23 changed files with 86 additions and 116 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@ import androidx.room.Room
import androidx.room.RoomDatabase
import app.suhasdissa.lyrics.backend.database.dao.ArtistsDao
import app.suhasdissa.lyrics.backend.database.dao.SongsDao
import app.suhasdissa.lyrics.backend.database.entities.ArtistEntity
import app.suhasdissa.lyrics.backend.database.entities.SongEntity
import app.suhasdissa.lyrics.backend.database.entities.Artist
import app.suhasdissa.lyrics.backend.database.entities.Song

@Suppress("TrailingComma")
@Database(entities = [SongEntity::class, ArtistEntity::class], version = 1, exportSchema = true,)
@Database(entities = [Song::class, Artist::class], version = 1, exportSchema = true,)
abstract class SongDatabase : RoomDatabase() {

abstract fun songsDao(): SongsDao
Expand Down
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
package app.suhasdissa.lyrics.backend.database.dao

import androidx.room.*
import app.suhasdissa.lyrics.backend.database.entities.ArtistEntity
import app.suhasdissa.lyrics.backend.database.entities.Artist

@Dao
interface ArtistsDao {
@Query("SELECT * FROM artists")
fun getAll(): List<ArtistEntity>
fun getAll(): List<Artist>

@Query("SELECT * FROM artists WHERE artistID = :artist")
fun getArtist(artist: Int): ArtistEntity
fun getArtist(artist: Int): Artist

@Insert(onConflict = OnConflictStrategy.IGNORE)
fun insertAll(memes: List<ArtistEntity>)
fun insertAll(memes: List<Artist>)

@Delete
fun delete(meme: ArtistEntity)
fun delete(meme: Artist)
}
Original file line number Diff line number Diff line change
@@ -1,13 +1,10 @@
package app.suhasdissa.lyrics.backend.database.dao

import androidx.room.*
import app.suhasdissa.lyrics.backend.database.entities.SongEntity
import app.suhasdissa.lyrics.backend.database.entities.Song

@Dao
interface SongsDao {
@Query("SELECT * FROM songs")
fun getAll(): List<SongEntity>

@Query("SELECT _id,song,artistName FROM songs")
fun getSongs(): List<SongHeader>

Expand All @@ -18,11 +15,8 @@ interface SongsDao {
fun filterArtist(artist: Int): List<SongHeader>

@Query("SELECT * FROM songs WHERE _id = :id")
fun getSong(id: Int): SongEntity
fun getSong(id: Int): Song

@Insert(onConflict = OnConflictStrategy.REPLACE)
fun insertAll(memes: List<SongEntity>)

@Delete
fun delete(meme: SongEntity)
fun insertAll(memes: List<Song>)
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import androidx.room.Entity
import androidx.room.PrimaryKey

@Entity(tableName = "artists")
data class ArtistEntity(
data class Artist(
@PrimaryKey val artistID: Int,
@ColumnInfo(name = "artistName", defaultValue = "") val artistName: String
)
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import androidx.room.Entity
import androidx.room.PrimaryKey

@Entity(tableName = "songs")
data class SongEntity(
data class Song(
@PrimaryKey(autoGenerate = true) val _id: Int,
@ColumnInfo(name = "artistID", defaultValue = "") val artistID: Int,
@ColumnInfo(name = "song", defaultValue = "") val song: String,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package app.suhasdissa.lyrics.backend.repositories

import android.util.Log
import app.suhasdissa.lyrics.backend.database.dao.SongsDao
import app.suhasdissa.lyrics.backend.database.entities.SongEntity
import app.suhasdissa.lyrics.backend.database.entities.Song
import app.suhasdissa.lyrics.backend.repositories.data.SongUpdate
import com.google.firebase.firestore.FirebaseFirestore

Expand All @@ -11,20 +11,21 @@ class FirestoreSongUpdateRepository(
) : SongUpdateRepository {

override fun updateLyrics() {
remoteDB.collection("Lyrics").whereNotEqualTo("_id", 0).get().addOnSuccessListener { querySnapshot ->
val songList = querySnapshot.toObjects(SongUpdate::class.java)
if (songList.isNotEmpty()) {
songsDao.insertAll(songList.map {
SongEntity(
artistID = it.artistID,
song = it.song,
lyric = it.lyric,
artistName = it.artistName,
_id = it._id
)
})
}
}.addOnFailureListener { e ->
remoteDB.collection("Lyrics").whereNotEqualTo("_id", 0).get()
.addOnSuccessListener { querySnapshot ->
val songList = querySnapshot.toObjects(SongUpdate::class.java)
if (songList.isNotEmpty()) {
songsDao.insertAll(songList.map {
Song(
artistID = it.artistID,
song = it.song,
lyric = it.lyric,
artistName = it.artistName,
_id = it._id
)
})
}
}.addOnFailureListener { e ->
Log.d("Firestore", e.toString())
}
}
Expand All @@ -37,12 +38,14 @@ class FirestoreSongUpdateRepository(
newLyric["artistName"] = update.artistName
newLyric["lyric"] = update.lyric

remoteDB.collection("Lyrics").document(update._id.toString()).set(newLyric).addOnSuccessListener {
// Successful write
}.addOnFailureListener { e ->
remoteDB.collection("Lyrics").document(update._id.toString()).set(newLyric)
.addOnSuccessListener {
// Successful write
}.addOnFailureListener { e ->
Log.d("Firestore", e.toString())
}
}

override fun addNewLyric(update: SongUpdate) {
val newLyric = HashMap<String, Any>()
newLyric["_id"] = 0
Expand Down
Original file line number Diff line number Diff line change
@@ -1,58 +1,35 @@
package app.suhasdissa.lyrics.backend.repositories

import app.suhasdissa.lyrics.backend.database.dao.ArtistsDao
import app.suhasdissa.lyrics.backend.database.dao.SongHeader
import app.suhasdissa.lyrics.backend.database.dao.SongsDao
import app.suhasdissa.lyrics.backend.database.entities.ArtistEntity
import app.suhasdissa.lyrics.backend.database.entities.SongEntity
import app.suhasdissa.lyrics.backend.repositories.data.Artist
import app.suhasdissa.lyrics.backend.repositories.data.Song
import app.suhasdissa.lyrics.backend.repositories.data.SongHeader
import app.suhasdissa.lyrics.backend.database.entities.Artist
import app.suhasdissa.lyrics.backend.database.entities.Song

class LocalSongRepository(private val songsDao: SongsDao, private val artistsDao: ArtistsDao) :
SongRepository {

private fun SongEntity.toSong() =
Song(artistID = artistID, song = song, lyric = lyric, artistName = artistName, _id = _id)

private fun ArtistEntity.toArtist() = Artist(artistID = artistID, artistName = artistName)

override suspend fun getSongs(): ArrayList<SongHeader> {
return songsDao.getSongs().mapTo(ArrayList()) {
SongHeader(
_id = it._id, song = it.song, artistName = it.artistName
)
}
override suspend fun getSongs(): List<SongHeader> {
return songsDao.getSongs()
}

override suspend fun getArtists(): ArrayList<Artist> {
return artistsDao.getAll().mapTo(ArrayList()) {
Artist(
artistID = it.artistID, artistName = it.artistName
)
}
override suspend fun getArtists(): List<Artist> {
return artistsDao.getAll()
}

override suspend fun getSong(id: Int): Song {
return songsDao.getSong(id).toSong()
return songsDao.getSong(id)
}

override suspend fun getArtist(id: Int): Artist {
return artistsDao.getArtist(id).toArtist()
return artistsDao.getArtist(id)
}

override suspend fun searchSongs(search: String): ArrayList<SongHeader> {
return songsDao.searchSongs(search).mapTo(ArrayList()) {
SongHeader(
_id = it._id, song = it.song, artistName = it.artistName
)
}
override suspend fun searchSongs(search: String): List<SongHeader> {
return songsDao.searchSongs(search)
}

override suspend fun filterArtist(artist: Int): ArrayList<SongHeader> {
return songsDao.filterArtist(artist).mapTo(ArrayList()) {
SongHeader(
_id = it._id, song = it.song, artistName = it.artistName
)
}
override suspend fun filterArtist(artist: Int): List<SongHeader> {
return songsDao.filterArtist(artist)
}
}
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
package app.suhasdissa.lyrics.backend.repositories

import app.suhasdissa.lyrics.backend.repositories.data.Artist
import app.suhasdissa.lyrics.backend.repositories.data.Song
import app.suhasdissa.lyrics.backend.repositories.data.SongHeader
import app.suhasdissa.lyrics.backend.database.dao.SongHeader
import app.suhasdissa.lyrics.backend.database.entities.Artist
import app.suhasdissa.lyrics.backend.database.entities.Song

interface SongRepository {
suspend fun getSongs(): ArrayList<SongHeader>
suspend fun getArtists(): ArrayList<Artist>
suspend fun getSongs(): List<SongHeader>
suspend fun getArtists(): List<Artist>
suspend fun getSong(id: Int): Song
suspend fun getArtist(id: Int): Artist
suspend fun searchSongs(search: String): ArrayList<SongHeader>
suspend fun filterArtist(artist: Int): ArrayList<SongHeader>
suspend fun searchSongs(search: String): List<SongHeader>
suspend fun filterArtist(artist: Int): List<SongHeader>
}

This file was deleted.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ import androidx.lifecycle.viewModelScope
import androidx.lifecycle.viewmodel.initializer
import androidx.lifecycle.viewmodel.viewModelFactory
import app.suhasdissa.lyrics.LyricsApplication
import app.suhasdissa.lyrics.backend.database.entities.Artist
import app.suhasdissa.lyrics.backend.repositories.SongRepository
import app.suhasdissa.lyrics.backend.repositories.data.Artist
import app.suhasdissa.lyrics.backend.viewmodels.states.FilterState
import kotlinx.coroutines.launch

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,12 @@ import androidx.lifecycle.viewModelScope
import androidx.lifecycle.viewmodel.initializer
import androidx.lifecycle.viewmodel.viewModelFactory
import app.suhasdissa.lyrics.LyricsApplication
import app.suhasdissa.lyrics.backend.database.entities.Artist
import app.suhasdissa.lyrics.backend.repositories.SongRepository
import app.suhasdissa.lyrics.backend.repositories.data.Artist
import kotlinx.coroutines.launch

class ArtistViewModel(private val songRepository: SongRepository) : ViewModel() {
var artists: ArrayList<Artist> by mutableStateOf(arrayListOf())
var artists: List<Artist> by mutableStateOf(listOf())
private set

init {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ import androidx.lifecycle.viewModelScope
import androidx.lifecycle.viewmodel.initializer
import androidx.lifecycle.viewmodel.viewModelFactory
import app.suhasdissa.lyrics.LyricsApplication
import app.suhasdissa.lyrics.backend.database.entities.Song
import app.suhasdissa.lyrics.backend.repositories.SongRepository
import app.suhasdissa.lyrics.backend.repositories.data.Song
import kotlinx.coroutines.launch

class LyricsViewModel(private val songRepository: SongRepository) : ViewModel() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,12 @@ import androidx.lifecycle.viewModelScope
import androidx.lifecycle.viewmodel.initializer
import androidx.lifecycle.viewmodel.viewModelFactory
import app.suhasdissa.lyrics.LyricsApplication
import app.suhasdissa.lyrics.backend.database.dao.SongHeader
import app.suhasdissa.lyrics.backend.repositories.SongRepository
import app.suhasdissa.lyrics.backend.repositories.data.SongHeader
import kotlinx.coroutines.launch

class SongsViewModel(private val songRepository: SongRepository) : ViewModel() {
var songs: ArrayList<SongHeader> by mutableStateOf(arrayListOf())
var songs: List<SongHeader> by mutableStateOf(arrayListOf())
private set

init {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package app.suhasdissa.lyrics.backend.viewmodels.states

import app.suhasdissa.lyrics.backend.repositories.data.SongHeader
import app.suhasdissa.lyrics.backend.database.dao.SongHeader

sealed interface FilterState {
data class Success(val songs: ArrayList<SongHeader>) : FilterState
data class Success(val songs: List<SongHeader>) : FilterState
object Empty : FilterState
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package app.suhasdissa.lyrics.backend.viewmodels.states

import app.suhasdissa.lyrics.backend.repositories.data.SongHeader
import app.suhasdissa.lyrics.backend.database.dao.SongHeader

sealed interface SearchState {
data class Success(val songs: ArrayList<SongHeader>) : SearchState
data class Success(val songs: List<SongHeader>) : SearchState
object Empty : SearchState
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.Dialog
import app.suhasdissa.lyrics.backend.repositories.data.Artist
import app.suhasdissa.lyrics.backend.database.entities.Artist

@Composable
fun ArtistSelectDialog(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@ import androidx.compose.foundation.lazy.grid.items
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import app.suhasdissa.lyrics.backend.repositories.data.SongHeader
import app.suhasdissa.lyrics.backend.database.dao.SongHeader

@Composable
fun SongGrid(
songs: ArrayList<SongHeader>, modifier: Modifier = Modifier, onClickTextCard: (url: Int) -> Unit
songs: List<SongHeader>, modifier: Modifier = Modifier, onClickTextCard: (url: Int) -> Unit
) {
LazyVerticalGrid(
columns = GridCells.Adaptive(500.dp),
Expand Down
Loading

0 comments on commit c9a2e1f

Please sign in to comment.