From d8e480b5d44609d1d3b71ea50d72c392eada1a1f Mon Sep 17 00:00:00 2001 From: HelaKaraa Date: Thu, 12 Sep 2024 11:08:39 +0200 Subject: [PATCH] feat #728: Modify validUntil type to String --- daikoku/app/controllers/ApiController.scala | 5 +++-- daikoku/app/domain/SchemaDefinition.scala | 4 +++- daikoku/app/domain/apikeyEntities.scala | 4 ++-- daikoku/app/domain/json.scala | 7 +++++-- daikoku/app/utils/ApiService.scala | 4 ++-- 5 files changed, 15 insertions(+), 9 deletions(-) diff --git a/daikoku/app/controllers/ApiController.scala b/daikoku/app/controllers/ApiController.scala index 92d5e455e..f4a7f0fdf 100644 --- a/daikoku/app/controllers/ApiController.scala +++ b/daikoku/app/controllers/ApiController.scala @@ -1072,7 +1072,7 @@ class ApiController( apiKey = data.apiKey, plan = data.plan, createdAt = DateTime.now(), - validUntil = DateTime.now(), + validUntil = None, team = data.team, api = data.api, by = ctx.user.id, @@ -1750,7 +1750,8 @@ class ApiController( customMaxPerDay = (body \ "customMaxPerDay").asOpt[Long], customMaxPerMonth = (body \ "customMaxPerMonth").asOpt[Long], customReadOnly = (body \ "customReadOnly").asOpt[Boolean], - adminCustomName = (body \ "adminCustomName").asOpt[String] + adminCustomName = (body \ "adminCustomName").asOpt[String], + validUntil = (body \ "validUntil").asOpt[String], ) result <- EitherT(apiService.updateSubscription(ctx.tenant, subToSave, plan)) diff --git a/daikoku/app/domain/SchemaDefinition.scala b/daikoku/app/domain/SchemaDefinition.scala index 04e520b46..8c206956b 100644 --- a/daikoku/app/domain/SchemaDefinition.scala +++ b/daikoku/app/domain/SchemaDefinition.scala @@ -2109,7 +2109,9 @@ object SchemaDefinition { ) ), Field("createdAt", DateTimeUnitype, resolve = _.value.createdAt), - Field("validUntil", DateTimeUnitype, resolve = _.value.validUntil), + Field("validUntil", + OptionType(StringType), + resolve = _.value.validUntil), Field( "team", OptionType(TeamObjectType), diff --git a/daikoku/app/domain/apikeyEntities.scala b/daikoku/app/domain/apikeyEntities.scala index ae19d536e..844396cd3 100644 --- a/daikoku/app/domain/apikeyEntities.scala +++ b/daikoku/app/domain/apikeyEntities.scala @@ -59,7 +59,7 @@ case class ApiSubscription( apiKey: OtoroshiApiKey, // TODO: add the actual plan at the time of the subscription plan: UsagePlanId, createdAt: DateTime, - validUntil: DateTime, + validUntil: Option[String] = None, team: TeamId, api: ApiId, by: UserId, @@ -109,7 +109,7 @@ case class ApiSubscription( "team" -> json.TeamIdFormat.writes(team), "api" -> json.ApiIdFormat.writes(api), "createdAt" -> json.DateTimeFormat.writes(createdAt), - "validUntil" -> json.DateTimeFormat.writes(validUntil), + "validUntil" -> validUntil.map(JsString).getOrElse(JsNull).as[JsValue], "customName" -> customName .map(id => JsString(id)) .getOrElse(JsNull) diff --git a/daikoku/app/domain/json.scala b/daikoku/app/domain/json.scala index 058ac77aa..5872278a1 100644 --- a/daikoku/app/domain/json.scala +++ b/daikoku/app/domain/json.scala @@ -2731,7 +2731,7 @@ object json { team = (json \ "team").as(TeamIdFormat), api = (json \ "api").as(ApiIdFormat), createdAt = (json \ "createdAt").as(DateTimeFormat), - validUntil = (json \ "validUntil").as(DateTimeFormat), + validUntil = (json \ "validUntil").asOpt[String], by = (json \ "by").as(UserIdFormat), customName = (json \ "customName").asOpt[String], adminCustomName = (json \ "adminCustomName").asOpt[String], @@ -2780,7 +2780,10 @@ object json { "team" -> TeamIdFormat.writes(o.team), "api" -> ApiIdFormat.writes(o.api), "createdAt" -> DateTimeFormat.writes(o.createdAt), - "validUntil"-> DateTimeFormat.writes(o.validUntil), + "validUntil"-> o.validUntil + .map(id => JsString(id)) + .getOrElse(JsNull) + .as[JsValue], "by" -> UserIdFormat.writes(o.by), "customName" -> o.customName .map(id => JsString(id)) diff --git a/daikoku/app/utils/ApiService.scala b/daikoku/app/utils/ApiService.scala index 6edde4729..21b42b2cb 100644 --- a/daikoku/app/utils/ApiService.scala +++ b/daikoku/app/utils/ApiService.scala @@ -256,7 +256,7 @@ class ApiService( apiKey = tunedApiKey.asOtoroshiApiKey, plan = plan.id, createdAt = DateTime.now(), - validUntil = DateTime.now(), + validUntil = None, team = team.id, api = api.id, by = user.id, @@ -360,7 +360,7 @@ class ApiService( apiKey = OtoroshiApiKey(clientName, clientId, clientSecret), plan = plan.id, createdAt = DateTime.now(), - validUntil = DateTime.now(), + validUntil = None, team = team.id, api = api.id, by = user.id,