diff --git a/desktopData/src/main/kotlin/com/intelligentbackpack/desktopdata/adapter/AuthorAdapter.kt b/desktopData/src/main/kotlin/com/intelligentbackpack/desktopdata/adapter/AuthorAdapter.kt new file mode 100644 index 00000000..0dbff519 --- /dev/null +++ b/desktopData/src/main/kotlin/com/intelligentbackpack/desktopdata/adapter/AuthorAdapter.kt @@ -0,0 +1,15 @@ +package com.intelligentbackpack.desktopdata.adapter + +import com.intelligentbackpack.desktopdata.db.entities.Author as AuthorDB +import com.intelligentbackpack.desktopdomain.entities.Author as AuthorDomain + +/** + * Adapter for author + */ +internal object AuthorAdapter { + + /** + * Convert from domain to DB + */ + fun AuthorDB.fromDBToDomain(): AuthorDomain = this.name +} diff --git a/desktopData/src/main/kotlin/com/intelligentbackpack/desktopdata/adapter/BookAdapter.kt b/desktopData/src/main/kotlin/com/intelligentbackpack/desktopdata/adapter/BookAdapter.kt new file mode 100644 index 00000000..f2a325b8 --- /dev/null +++ b/desktopData/src/main/kotlin/com/intelligentbackpack/desktopdata/adapter/BookAdapter.kt @@ -0,0 +1,44 @@ +package com.intelligentbackpack.desktopdata.adapter + +import book.communication.Book as BookRemote +import com.intelligentbackpack.desktopdata.adapter.AuthorAdapter.fromDBToDomain +import com.intelligentbackpack.desktopdata.db.entities.Book as BookDB +import com.intelligentbackpack.desktopdata.db.relations.BookWithAuthors +import com.intelligentbackpack.desktopdomain.entities.Book as BookDomain + +/** + * Adapter for book + */ +internal object BookAdapter { + + /** + * Convert from DB to domain + */ + fun BookWithAuthors.fromDBToDomain(): BookDomain { + return BookDomain.build { + isbn = this@fromDBToDomain.book.isbn + title = this@fromDBToDomain.book.title + authors = this@fromDBToDomain.authors.map { it.fromDBToDomain() }.toSet() + } + } + + /** + * Convert from domain to DB + */ + fun BookDomain.fromDomainToDB(): BookDB = + BookDB( + isbn = this.isbn, + title = this.title + ) + + /** + * Convert from remote to domain + */ + fun BookRemote.fromRemoteToDomain(): BookDomain { + return BookDomain.build { + isbn = this@fromRemoteToDomain.isbn + title = this@fromRemoteToDomain.titolo + authors = setOf(this@fromRemoteToDomain.autore) + } + } +} diff --git a/desktopData/src/main/kotlin/com/intelligentbackpack/desktopdata/adapter/SchoolSupplyAdapter.kt b/desktopData/src/main/kotlin/com/intelligentbackpack/desktopdata/adapter/SchoolSupplyAdapter.kt new file mode 100644 index 00000000..4f59d514 --- /dev/null +++ b/desktopData/src/main/kotlin/com/intelligentbackpack/desktopdata/adapter/SchoolSupplyAdapter.kt @@ -0,0 +1,39 @@ +package com.intelligentbackpack.desktopdata.adapter + +import com.intelligentbackpack.desktopdata.adapter.AuthorAdapter.fromDBToDomain +import com.intelligentbackpack.desktopdata.db.entities.SchoolSupply as SchoolSupplyDB +import com.intelligentbackpack.desktopdata.db.relations.BookCopyWithAuthors +import com.intelligentbackpack.desktopdomain.entities.Book +import com.intelligentbackpack.desktopdomain.entities.BookCopy +import com.intelligentbackpack.desktopdomain.entities.BookCopy as BookCopyDomain + +/** + * Adapter for school supply + */ +internal object SchoolSupplyAdapter { + + /** + * Convert from DB Book copy to domain Book copy + */ + fun BookCopyWithAuthors.fromDBToDomain(): BookCopyDomain { + return BookCopyDomain.build { + this.rfidCode = this@fromDBToDomain.bookCopy.rfid + this.book = Book.build { + isbn = this@fromDBToDomain.bookCopy.isbn + title = this@fromDBToDomain.bookCopy.title + authors = this@fromDBToDomain.authors.map { it.fromDBToDomain() }.toSet() + } + } + } + + /** + * Convert from domain Book copy to DB Book copy + */ + fun BookCopy.fromDomainToDB(type: Int, inBackpack: Boolean = false): SchoolSupplyDB = + SchoolSupplyDB( + rfid = this@fromDomainToDB.rfidCode, + isbn = this@fromDomainToDB.book.isbn, + type = type, + inBackpack = inBackpack + ) +}