Skip to content

Commit befdded

Browse files
committed
add post and comment entities
add post dao class add fake service client implementation
1 parent d8a7060 commit befdded

File tree

5 files changed

+72
-7
lines changed

5 files changed

+72
-7
lines changed

app/src/main/java/com/coffeeanddistractions/androidarchitecturecomponentskotlin/database/DatabaseContract.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import android.content.Context
99
* Created by Abdu on 12/20/2017.
1010
*/
1111

12-
@Database(version = 2, entities = arrayOf(UserEntity::class), exportSchema = false)
12+
@Database(version = 3, entities = arrayOf(UserEntity::class), exportSchema = false)
1313
abstract class ApplicationDatabase : RoomDatabase() {
1414
abstract public fun userDao(): UserDaoContract
1515

app/src/main/java/com/coffeeanddistractions/androidarchitecturecomponentskotlin/database/DatabaseEntities.kt

Lines changed: 43 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.coffeeanddistractions.androidarchitecturecomponentskotlin.database
22

33
import android.arch.persistence.room.Entity
4+
import android.arch.persistence.room.ForeignKey
45
import android.arch.persistence.room.PrimaryKey
56

67
/*
@@ -12,5 +13,45 @@ class UserEntity {
1213
@PrimaryKey(autoGenerate = true)
1314
var id: Long = 0
1415
var name: String = "Default name"
15-
var email: String= "default@email.com"
16-
}
16+
var email: String = "default@email.com"
17+
}
18+
19+
@Entity(tableName = "posts",
20+
foreignKeys = arrayOf(
21+
ForeignKey(
22+
entity = UserEntity::class,
23+
parentColumns = arrayOf("id"),
24+
childColumns = arrayOf("userId")
25+
)
26+
)
27+
)
28+
class PostEntity {
29+
@PrimaryKey(autoGenerate = true)
30+
var id: Long = 0
31+
var title: String = "Default Title"
32+
var description: String = "Default description"
33+
var commentCount: Int = 0
34+
var userId: Int = 0
35+
}
36+
37+
@Entity(tableName = "comments",
38+
foreignKeys = arrayOf(
39+
ForeignKey(
40+
entity = UserEntity::class,
41+
parentColumns = arrayOf("id"),
42+
childColumns = arrayOf("userId")
43+
),
44+
ForeignKey(
45+
entity = PostEntity::class,
46+
parentColumns = arrayOf("id"),
47+
childColumns = arrayOf("postId")
48+
)
49+
)
50+
)
51+
class CommentEntity {
52+
@PrimaryKey(autoGenerate = true)
53+
var id: Long = 0
54+
var body: String = "Default Title"
55+
var userId: Int = 0
56+
var postId: Int = 0
57+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package com.coffeeanddistractions.androidarchitecturecomponentskotlin.database
2+
3+
import android.arch.lifecycle.LiveData
4+
import android.arch.persistence.room.Dao
5+
import android.arch.persistence.room.Insert
6+
import android.arch.persistence.room.OnConflictStrategy
7+
import android.arch.persistence.room.Query
8+
9+
/*
10+
* Created by Abdu on 12/21/2017.
11+
*/
12+
13+
@Dao
14+
interface PostDaoContract {
15+
@Insert(onConflict = OnConflictStrategy.REPLACE)
16+
fun createPost(post: PostEntity)
17+
18+
@Insert(onConflict = OnConflictStrategy.REPLACE)
19+
fun insertPosts(posts: Array<PostEntity>)
20+
21+
@Query("select * from posts")
22+
fun queryAllPosts() : LiveData<Array<PostEntity>>
23+
}

app/src/main/java/com/coffeeanddistractions/androidarchitecturecomponentskotlin/models/Models.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@ package com.coffeeanddistractions.androidarchitecturecomponentskotlin.models
66

77
data class User(val id: Long, val name: String, val email: String)
88
data class Post(val id: Long, val title: String, val description: String, val commentCount: Int ,val userId: String)
9-
data class Comment(val id: Long, val text: String, val userId: Long, val postId: Long)
9+
data class Comment(val id: Long, val body: String, val userId: Long, val postId: Long)

app/src/main/java/com/coffeeanddistractions/androidarchitecturecomponentskotlin/services/ServiceClientImplementation.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,12 @@ class ServiceClientImplementation : ServiceClientDefinition {
1616
}
1717

1818
suspend override fun getUser(userId: Long): User {
19-
// use retrofit for this
20-
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
19+
val user = User(name = "abdu", email = "adil@email.com", id = 1 )
20+
delay(3, TimeUnit.SECONDS)
21+
return user
2122
}
2223

2324
suspend override fun updateUser(userId: Long, user: User) {
24-
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
25+
// todo after retrofit
2526
}
2627
}

0 commit comments

Comments
 (0)