Skip to content

Commit bbb22a6

Browse files
committed
task: Migrate the DbTx import in service and auth classes
1 parent 60ac122 commit bbb22a6

5 files changed

Lines changed: 21 additions & 21 deletions

File tree

backend/src/main/scala/com/softwaremill/bootzooka/email/EmailService.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.softwaremill.bootzooka.email
22

3-
import com.augustnagro.magnum.DbTx
3+
import ma.chinespirit.parlance.{DbTx, Postgres}
44
import com.softwaremill.bootzooka.email.sender.EmailSender
55
import com.softwaremill.bootzooka.infrastructure.DB
66
import com.softwaremill.bootzooka.logging.Logging
@@ -21,7 +21,7 @@ class EmailService(
2121
) extends EmailScheduler
2222
with Logging:
2323

24-
def schedule(data: EmailData)(using DbTx): Unit =
24+
def schedule(data: EmailData)(using DbTx[Postgres]): Unit =
2525
logger.debug(s"Scheduling email to be sent to: ${data.recipient}")
2626
val id = idGenerator.nextId[Email]()
2727
emailModel.insert(Email(id, data))
@@ -57,4 +57,4 @@ class EmailService(
5757
end EmailService
5858

5959
trait EmailScheduler:
60-
def schedule(data: EmailData)(using DbTx): Unit
60+
def schedule(data: EmailData)(using DbTx[Postgres]): Unit

backend/src/main/scala/com/softwaremill/bootzooka/passwordreset/PasswordResetService.scala

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.softwaremill.bootzooka.passwordreset
22

3-
import com.augustnagro.magnum.DbTx
3+
import ma.chinespirit.parlance.{DbTx, Postgres}
44
import com.softwaremill.bootzooka.Fail
55
import com.softwaremill.bootzooka.email.{EmailData, EmailScheduler, EmailSubjectContent, EmailTemplates}
66
import com.softwaremill.bootzooka.infrastructure.DB
@@ -23,22 +23,22 @@ class PasswordResetService(
2323
clock: Clock,
2424
db: DB
2525
) extends Logging:
26-
def forgotPassword(loginOrEmail: String)(using DbTx): Unit =
26+
def forgotPassword(loginOrEmail: String)(using DbTx[Postgres]): Unit =
2727
userModel.findByLoginOrEmail(loginOrEmail.toLowerCased) match
2828
case None => logger.debug(s"Could not find user with $loginOrEmail login/email")
2929
case Some(user) =>
3030
val pcr = createCode(user)
3131
sendCode(user, pcr)
3232

33-
private def createCode(user: User)(using DbTx): PasswordResetCode =
33+
private def createCode(user: User)(using DbTx[Postgres]): PasswordResetCode =
3434
logger.debug(s"Creating password reset code for user: ${user.id}")
3535
val id = idGenerator.nextId[PasswordResetCode]()
3636
val validUntil = clock.now().plusMillis(config.codeValid.toMillis)
3737
val passwordResetCode = PasswordResetCode(id, user.id, validUntil)
3838
passwordResetCodeModel.insert(passwordResetCode)
3939
passwordResetCode
4040

41-
private def sendCode(user: User, code: PasswordResetCode)(using DbTx): Unit =
41+
private def sendCode(user: User, code: PasswordResetCode)(using DbTx[Postgres]): Unit =
4242
logger.debug(s"Scheduling e-mail with reset code for user: ${user.id}")
4343
emailScheduler.schedule(EmailData(user.emailLowerCase, prepareResetEmail(user, code)))
4444

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.softwaremill.bootzooka.security
22

3-
import com.augustnagro.magnum.DbTx
3+
import ma.chinespirit.parlance.{DbTx, Postgres}
44
import com.softwaremill.bootzooka.logging.Logging
55
import com.softwaremill.bootzooka.user.User
66
import com.softwaremill.bootzooka.util.Strings.Id
@@ -10,7 +10,7 @@ import java.time.temporal.ChronoUnit
1010
import scala.concurrent.duration.Duration
1111

1212
class ApiKeyService(apiKeyModel: ApiKeyModel, idGenerator: IdGenerator, clock: Clock) extends Logging:
13-
def create(userId: Id[User], valid: Duration)(using DbTx): ApiKey =
13+
def create(userId: Id[User], valid: Duration)(using DbTx[Postgres]): ApiKey =
1414
val id = idGenerator.nextId[ApiKey]()
1515
val now = clock.now()
1616
val validUntil = now.plus(valid.toMillis, ChronoUnit.MILLIS)
@@ -20,11 +20,11 @@ class ApiKeyService(apiKeyModel: ApiKeyModel, idGenerator: IdGenerator, clock: C
2020
apiKey
2121
end create
2222

23-
def invalidate(id: Id[ApiKey])(using DbTx): Unit =
23+
def invalidate(id: Id[ApiKey])(using DbTx[Postgres]): Unit =
2424
logger.debug(s"Invalidating api key $id")
2525
apiKeyModel.delete(id)
2626

27-
def invalidateAllForUser(userId: Id[User])(using DbTx): Unit =
27+
def invalidateAllForUser(userId: Id[User])(using DbTx[Postgres]): Unit =
2828
logger.debug(s"Invalidating all api keys for user $userId")
2929
apiKeyModel.deleteAllForUser(userId)
3030
end ApiKeyService

backend/src/main/scala/com/softwaremill/bootzooka/security/Auth.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.softwaremill.bootzooka.security
22

3-
import com.augustnagro.magnum.DbTx
3+
import ma.chinespirit.parlance.{DbTx, Postgres}
44
import com.softwaremill.bootzooka.*
55
import com.softwaremill.bootzooka.infrastructure.DB
66
import com.softwaremill.bootzooka.logging.Logging
@@ -44,8 +44,8 @@ end Auth
4444
*/
4545
trait AuthTokenOps[T]:
4646
def tokenName: String
47-
def findById: DbTx ?=> Id[T] => Option[T]
48-
def delete: DbTx ?=> T => Unit
47+
def findById: DbTx[Postgres] ?=> Id[T] => Option[T]
48+
def delete: DbTx[Postgres] ?=> T => Unit
4949
def userId: T => Id[User]
5050
def validUntil: T => Instant
5151
def deleteWhenValid: Boolean

backend/src/main/scala/com/softwaremill/bootzooka/user/UserService.scala

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.softwaremill.bootzooka.user
22

3-
import com.augustnagro.magnum.DbTx
3+
import ma.chinespirit.parlance.{DbTx, Postgres}
44
import com.softwaremill.bootzooka.*
55
import com.softwaremill.bootzooka.email.{EmailData, EmailScheduler, EmailTemplates}
66
import com.softwaremill.bootzooka.logging.Logging
@@ -26,7 +26,7 @@ class UserService(
2626
private val EmailAlreadyUsed = "E-mail already in use!"
2727
private val IncorrectLoginOrPassword = "Incorrect login/email or password"
2828

29-
def registerNewUser(login: String, email: String, password: String)(using DbTx): Either[Fail, ApiKey] =
29+
def registerNewUser(login: String, email: String, password: String)(using DbTx[Postgres]): Either[Fail, ApiKey] =
3030
val loginClean = login.trim()
3131
val emailClean = email.trim()
3232

@@ -56,17 +56,17 @@ class UserService(
5656
doRegister()
5757
end registerNewUser
5858

59-
def findById(id: Id[User])(using DbTx): Either[Fail, User] = userOrNotFound(userModel.findById(id))
59+
def findById(id: Id[User])(using DbTx[Postgres]): Either[Fail, User] = userOrNotFound(userModel.findById(id))
6060

61-
def login(loginOrEmail: String, password: String, apiKeyValid: Option[Duration])(using DbTx): Either[Fail, ApiKey] = either:
61+
def login(loginOrEmail: String, password: String, apiKeyValid: Option[Duration])(using DbTx[Postgres]): Either[Fail, ApiKey] = either:
6262
val loginOrEmailClean = loginOrEmail.trim()
6363
val user = userOrNotFound(userModel.findByLoginOrEmail(loginOrEmailClean.toLowerCased)).ok()
6464
verifyPassword(user, password, validationErrorMsg = IncorrectLoginOrPassword).ok()
6565
apiKeyService.create(user.id, apiKeyValid.getOrElse(config.defaultApiKeyValid))
6666

67-
def logout(id: Id[ApiKey])(using DbTx): Unit = apiKeyService.invalidate(id)
67+
def logout(id: Id[ApiKey])(using DbTx[Postgres]): Unit = apiKeyService.invalidate(id)
6868

69-
def changeUser(userId: Id[User], newLogin: String, newEmail: String)(using DbTx): Either[Fail, Unit] =
69+
def changeUser(userId: Id[User], newLogin: String, newEmail: String)(using DbTx[Postgres]): Either[Fail, Unit] =
7070
val newLoginClean = newLogin.trim()
7171
val newEmailClean = newEmail.trim()
7272
val newEmailtoLowerCased = newEmailClean.toLowerCased
@@ -111,7 +111,7 @@ class UserService(
111111
if anyUpdate then sendMail(findById(userId).ok())
112112
end changeUser
113113

114-
def changePassword(userId: Id[User], currentPassword: String, newPassword: String)(using DbTx): Either[Fail, ApiKey] =
114+
def changePassword(userId: Id[User], currentPassword: String, newPassword: String)(using DbTx[Postgres]): Either[Fail, ApiKey] =
115115
def validateUserPassword(userId: Id[User], currentPassword: String): Either[Fail, User] =
116116
for
117117
user <- userOrNotFound(userModel.findById(userId))

0 commit comments

Comments
 (0)