diff --git a/Sources/src/main/kotlin/allin/data/AllInDataSource.kt b/Sources/src/main/kotlin/allin/data/AllInDataSource.kt index a0861bb..4cf498b 100644 --- a/Sources/src/main/kotlin/allin/data/AllInDataSource.kt +++ b/Sources/src/main/kotlin/allin/data/AllInDataSource.kt @@ -4,4 +4,5 @@ abstract class AllInDataSource { abstract val userDataSource: UserDataSource abstract val betDataSource: BetDataSource abstract val participationDataSource: ParticipationDataSource + abstract val friendDataSource: FriendDataSource } \ No newline at end of file diff --git a/Sources/src/main/kotlin/allin/data/FriendDataSource.kt b/Sources/src/main/kotlin/allin/data/FriendDataSource.kt index 5a57e22..05b0658 100644 --- a/Sources/src/main/kotlin/allin/data/FriendDataSource.kt +++ b/Sources/src/main/kotlin/allin/data/FriendDataSource.kt @@ -1,8 +1,10 @@ package allin.data +import allin.model.User + interface FriendDataSource { fun addFriend(sender: String, receiver: String) - fun getFriendFromUserId(id: String) + fun getFriendFromUserId(id: String): List fun getFriendFromUsername(username: String) fun deleteFriend(senderId: String, receiverId: String) fun isFriend(firstUser: String, secondUser: String) diff --git a/Sources/src/main/kotlin/allin/data/mock/MockDataSource.kt b/Sources/src/main/kotlin/allin/data/mock/MockDataSource.kt index 6df3197..36517cc 100644 --- a/Sources/src/main/kotlin/allin/data/mock/MockDataSource.kt +++ b/Sources/src/main/kotlin/allin/data/mock/MockDataSource.kt @@ -1,9 +1,6 @@ package allin.data.mock -import allin.data.AllInDataSource -import allin.data.BetDataSource -import allin.data.ParticipationDataSource -import allin.data.UserDataSource +import allin.data.* import allin.model.Bet import allin.model.BetResult import allin.model.Participation @@ -30,4 +27,5 @@ class MockDataSource : AllInDataSource() { override val userDataSource: UserDataSource by lazy { MockUserDataSource(mockData) } override val betDataSource: BetDataSource by lazy { MockBetDataSource(mockData) } override val participationDataSource: ParticipationDataSource by lazy { MockParticipationDataSource(mockData) } + override val friendDataSource: FriendDataSource by lazy { MockFriendDataSource(mockData) } } diff --git a/Sources/src/main/kotlin/allin/data/mock/MockFriendDataSource.kt b/Sources/src/main/kotlin/allin/data/mock/MockFriendDataSource.kt new file mode 100644 index 0000000..ce77707 --- /dev/null +++ b/Sources/src/main/kotlin/allin/data/mock/MockFriendDataSource.kt @@ -0,0 +1,26 @@ +package allin.data.mock + +import allin.data.FriendDataSource +import allin.model.User + +class MockFriendDataSource(mockData: MockDataSource.MockData) : FriendDataSource { + override fun addFriend(sender: String, receiver: String) { + TODO("Not yet implemented") + } + + override fun getFriendFromUserId(id: String): List { + TODO("Not yet implemented") + } + + override fun getFriendFromUsername(username: String) { + TODO("Not yet implemented") + } + + override fun deleteFriend(senderId: String, receiverId: String) { + TODO("Not yet implemented") + } + + override fun isFriend(firstUser: String, secondUser: String) { + TODO("Not yet implemented") + } +} \ No newline at end of file diff --git a/Sources/src/main/kotlin/allin/data/postgres/PostgresDataSource.kt b/Sources/src/main/kotlin/allin/data/postgres/PostgresDataSource.kt index 335d111..26e15c8 100644 --- a/Sources/src/main/kotlin/allin/data/postgres/PostgresDataSource.kt +++ b/Sources/src/main/kotlin/allin/data/postgres/PostgresDataSource.kt @@ -1,9 +1,6 @@ package allin.data.postgres -import allin.data.AllInDataSource -import allin.data.BetDataSource -import allin.data.ParticipationDataSource -import allin.data.UserDataSource +import allin.data.* import allin.ext.execute import org.ktorm.database.Database @@ -95,9 +92,20 @@ class PostgresDataSource : AllInDataSource() { ) """.trimIndent() ) + + database.execute( + """ + CREATE TABLE IF NOT EXISTS friend( + sender VARCHAR(255), + receiver VARCHAR(255), + CONSTRAINT pk_friend PRIMARY KEY (sender,receiver) + ) + """.trimIndent() + ) } override val userDataSource: UserDataSource by lazy { PostgresUserDataSource(database) } override val betDataSource: BetDataSource by lazy { PostgresBetDataSource(database) } override val participationDataSource: ParticipationDataSource by lazy { PostgresParticipationDataSource(database) } + override val friendDataSource: FriendDataSource by lazy { PostgresFriendDataSource(database) } } \ No newline at end of file diff --git a/Sources/src/main/kotlin/allin/data/postgres/PostgresFriendDataSource.kt b/Sources/src/main/kotlin/allin/data/postgres/PostgresFriendDataSource.kt index 050a3a9..9354419 100644 --- a/Sources/src/main/kotlin/allin/data/postgres/PostgresFriendDataSource.kt +++ b/Sources/src/main/kotlin/allin/data/postgres/PostgresFriendDataSource.kt @@ -1,15 +1,21 @@ package allin.data.postgres import allin.data.FriendDataSource +import allin.data.postgres.entities.FriendsEntity +import allin.model.User import org.ktorm.database.Database +import org.ktorm.dsl.insert class PostgresFriendDataSource(private val database: Database) : FriendDataSource { override fun addFriend(sender: String, receiver: String) { -// TODO("Not yet implemented") + database.insert(FriendsEntity) { + set(it.sender, sender) + set(it.receiver, receiver) + } } - override fun getFriendFromUserId(id: String) { - TODO("Not yet implemented") + override fun getFriendFromUserId(id: String): List { + TODO() } override fun getFriendFromUsername(username: String) { diff --git a/Sources/src/main/kotlin/allin/data/postgres/entities/FriendEntity.kt b/Sources/src/main/kotlin/allin/data/postgres/entities/FriendEntity.kt new file mode 100644 index 0000000..a436c71 --- /dev/null +++ b/Sources/src/main/kotlin/allin/data/postgres/entities/FriendEntity.kt @@ -0,0 +1,15 @@ +package allin.data.postgres.entities + +import org.ktorm.entity.Entity +import org.ktorm.schema.Table +import org.ktorm.schema.varchar + +interface FriendEntity : Entity { + val sender: String + val receiver: String +} + +object FriendsEntity : Table("friend") { + val sender = varchar("id").primaryKey().bindTo { it.sender } + val receiver = varchar("bet").primaryKey().bindTo { it.receiver } +} \ No newline at end of file