refactor/tweaked the RefreshUser-->UserRefreshes

This commit is contained in:
hongwei 2020-06-19 14:07:38 +02:00
parent 7183dae0fc
commit e2219bfea2
4 changed files with 44 additions and 44 deletions

View File

@ -32,6 +32,7 @@ import java.util.{Locale, TimeZone}
import code.CustomerDependants.MappedCustomerDependant
import code.DynamicData.DynamicData
import code.DynamicEndpoint.DynamicEndpoint
import code.UserRefreshes.MappedUserRefreshes
import code.accountapplication.MappedAccountApplication
import code.accountattribute.MappedAccountAttribute
import code.accountholders.MapperAccountHolders
@ -90,7 +91,6 @@ import code.productcollection.MappedProductCollection
import code.productcollectionitem.MappedProductCollectionItem
import code.products.MappedProduct
import code.ratelimiting.RateLimiting
import code.refreshuser.MappedRefreshUser
import code.remotedata.RemotedataActors
import code.scheduler.DatabaseDriverScheduler
import code.scope.{MappedScope, MappedUserScope}
@ -815,7 +815,7 @@ object ToSchemify {
AccountIdMapping,
DirectDebit,
StandingOrder,
MappedRefreshUser
MappedUserRefreshes
)++ APIBuilder_Connector.allAPIBuilderModels
// start grpc server

View File

@ -1,4 +1,4 @@
package code.refreshuser
package code.UserRefreshes
import java.util.{Calendar, Date}
@ -7,22 +7,22 @@ import code.util.UUIDString
import net.liftweb.common.Full
import net.liftweb.mapper._
object MappedRefreshUserProvider extends RefreshUserProvider {
object MappedUserRefreshesProvider extends UserRefreshesProvider {
//This method will check if we need to refresh user or not..
//1st: check if last update is empty or not,
// if empty --> RefreshUser/true
// if empty --> UserRefreshes/true
// if not empty, compare last update and the props interval-->
// --> if (lastUpdate + interval) >= current --> RefreshUser/true
// --> if (lastUpdate + interval) >= current --> UserRefreshes/true
// --> if (lastUpdate + interval) < current --> false
override def needToRefreshUser(userId: String) = {
MappedRefreshUser.find(By(MappedRefreshUser.mUserId, userId)) match {
MappedUserRefreshes.find(By(MappedUserRefreshes.mUserId, userId)) match {
case Full(user) =>{
val refreshUserInterval = APIUtil.getPropsAsIntValue("refresh_user.interval", 43200)
val UserRefreshesInterval = APIUtil.getPropsAsIntValue("refresh_user.interval", 43200)
val lastUpdate: Date = user.updatedAt.get
val lastUpdatePlusInterval: Calendar = Calendar.getInstance()
lastUpdatePlusInterval.setTime(lastUpdate)
lastUpdatePlusInterval.add(Calendar.MINUTE, refreshUserInterval)
lastUpdatePlusInterval.add(Calendar.MINUTE, UserRefreshesInterval)
val currentDate = Calendar.getInstance()
lastUpdatePlusInterval.before(currentDate)
}
@ -32,14 +32,14 @@ object MappedRefreshUserProvider extends RefreshUserProvider {
}
class MappedRefreshUser extends RefreshUser with LongKeyedMapper[MappedRefreshUser] with IdPK with CreatedUpdated {
class MappedUserRefreshes extends UserRefreshes with LongKeyedMapper[MappedUserRefreshes] with IdPK with CreatedUpdated {
def getSingleton = MappedRefreshUser
def getSingleton = MappedUserRefreshes
object mUserId extends UUIDString(this)
override def userId: String = mUserId.get
}
object MappedRefreshUser extends MappedRefreshUser with LongKeyedMetaMapper[MappedRefreshUser] {
object MappedUserRefreshes extends MappedUserRefreshes with LongKeyedMetaMapper[MappedUserRefreshes] {
override def dbIndexes = UniqueIndex(mUserId) :: super.dbIndexes
}

View File

@ -1,32 +0,0 @@
package code.refreshuser
import code.api.util.APIUtil
import net.liftweb.util.SimpleInjector
object RefreshUser extends SimpleInjector {
val RefreshUser = new Inject(buildOne _) {}
def buildOne: RefreshUserProvider =
APIUtil.getPropsAsBoolValue("use_akka", false) match {
case false => MappedRefreshUserProvider
case true => MappedRefreshUserProvider //RemotedataScopes // We will use Akka as a middleware
}
}
//This is used to control the refresh user process.
// refresh_user.interval props will control how often to make it
trait RefreshUser {
def userId : String
}
trait RefreshUserProvider {
def needToRefreshUser(userId: String):Boolean
}
class RemotedataRefreshUserCaseClasses {
case class needToRefreshUser(userId: String)
}
object RemotedataRefreshUserCaseClasses extends RemotedataRefreshUserCaseClasses

View File

@ -0,0 +1,32 @@
package code.UserRefreshes
import code.api.util.APIUtil
import net.liftweb.util.SimpleInjector
object UserRefreshes extends SimpleInjector {
val UserRefreshes = new Inject(buildOne _) {}
def buildOne: UserRefreshesProvider =
APIUtil.getPropsAsBoolValue("use_akka", false) match {
case false => MappedUserRefreshesProvider
case true => MappedUserRefreshesProvider //RemotedataScopes // We will use Akka as a middleware
}
}
//This is used to control the refresh user process.
// refresh_user.interval props will control how often to make it
trait UserRefreshes {
def userId : String
}
trait UserRefreshesProvider {
def needToRefreshUser(userId: String):Boolean
}
class RemotedataUserRefreshesCaseClasses {
case class needToUserRefreshes(userId: String)
}
object RemotedataUserRefreshesCaseClasses extends RemotedataUserRefreshesCaseClasses