Skip to content
This repository has been archived by the owner on Oct 23, 2023. It is now read-only.

Commit

Permalink
refactor(desktop): add adapter for domain, db and remote (for Author,…
Browse files Browse the repository at this point in the history
… Book and SchoolSupply)
  • Loading branch information
AndreaBrighi committed May 15, 2023
1 parent f77419d commit e80b72a
Show file tree
Hide file tree
Showing 3 changed files with 98 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -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
}
Original file line number Diff line number Diff line change
@@ -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)
}
}
}
Original file line number Diff line number Diff line change
@@ -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
)
}

0 comments on commit e80b72a

Please sign in to comment.