Skip to content

Commit 0598df6

Browse files
authored
Merge pull request #2685 from simonredfern/develop
Products clean up
2 parents 5bd6f9b + ea8ecf5 commit 0598df6

File tree

7 files changed

+169
-6
lines changed

7 files changed

+169
-6
lines changed

obp-api/src/main/scala/code/api/ResourceDocs1_4_0/SwaggerDefinitionsJSON.scala

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5245,7 +5245,16 @@ object SwaggerDefinitionsJSON {
52455245
category = Some("category1"),
52465246
more_info_url = Some("https://example.com/more-info"),
52475247
terms_and_conditions_url = Some("https://example.com/terms"),
5248-
description = Some("Description of the product")
5248+
description = Some("Description of the product"),
5249+
collection_id = Some("collection-abc"),
5250+
monthly_subscription_currency = Some("EUR"),
5251+
monthly_subscription_amount = Some("9.99"),
5252+
per_second_call_limit = Some(10L),
5253+
per_minute_call_limit = Some(100L),
5254+
per_hour_call_limit = Some(1000L),
5255+
per_day_call_limit = Some(10000L),
5256+
per_week_call_limit = Some(50000L),
5257+
per_month_call_limit = Some(200000L)
52495258
)
52505259
lazy val apiProductJsonV600 = ApiProductJsonV600(
52515260
api_product_id = "api-product-id-123",
@@ -5257,6 +5266,15 @@ object SwaggerDefinitionsJSON {
52575266
more_info_url = "https://example.com/more-info",
52585267
terms_and_conditions_url = "https://example.com/terms",
52595268
description = "Description of the product",
5269+
collection_id = "collection-abc",
5270+
monthly_subscription_currency = "EUR",
5271+
monthly_subscription_amount = "9.99",
5272+
per_second_call_limit = 10L,
5273+
per_minute_call_limit = 100L,
5274+
per_hour_call_limit = 1000L,
5275+
per_day_call_limit = 10000L,
5276+
per_week_call_limit = 50000L,
5277+
per_month_call_limit = 200000L,
52605278
attributes = Some(List(apiProductAttributeResponseJsonV600))
52615279
)
52625280
lazy val apiProductsJsonV600 = ApiProductsJsonV600(List(apiProductJsonV600))

obp-api/src/main/scala/code/api/util/NewStyle.scala

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3823,11 +3823,23 @@ object NewStyle extends MdcLoggable{
38233823
moreInfoUrl: String,
38243824
termsAndConditionsUrl: String,
38253825
description: String,
3826+
collectionId: String,
3827+
monthlySubscriptionCurrency: String,
3828+
monthlySubscriptionAmount: String,
3829+
perSecondCallLimit: Long,
3830+
perMinuteCallLimit: Long,
3831+
perHourCallLimit: Long,
3832+
perDayCallLimit: Long,
3833+
perWeekCallLimit: Long,
3834+
perMonthCallLimit: Long,
38263835
callContext: Option[CallContext]
38273836
): OBPReturnType[ApiProductTrait] = {
38283837
Future(MappedApiProductsProvider.createOrUpdateApiProduct(
38293838
bankId, apiProductCode, parentApiProductCode, name, category,
3830-
moreInfoUrl, termsAndConditionsUrl, description
3839+
moreInfoUrl, termsAndConditionsUrl, description,
3840+
collectionId, monthlySubscriptionCurrency, monthlySubscriptionAmount,
3841+
perSecondCallLimit, perMinuteCallLimit, perHourCallLimit,
3842+
perDayCallLimit, perWeekCallLimit, perMonthCallLimit
38313843
)) map {
38323844
i => (unboxFullOrFail(i, callContext, CreateApiProductError), callContext)
38333845
}
@@ -3874,6 +3886,12 @@ object NewStyle extends MdcLoggable{
38743886
}
38753887
}
38763888

3889+
def deleteApiProductAttributesByBankIdAndCode(bankId: String, apiProductCode: String, callContext: Option[CallContext]): OBPReturnType[Boolean] = {
3890+
Future(MappedApiProductAttributesProvider.deleteApiProductAttributesByBankIdAndCode(bankId, apiProductCode)) map {
3891+
i => (unboxFullOrFail(i, callContext, s"$DeleteApiProductAttributeError Current BANK_ID($bankId) API_PRODUCT_CODE($apiProductCode)"), callContext)
3892+
}
3893+
}
3894+
38773895
def createApiCollectionEndpoint(
38783896
apiCollectionId: String,
38793897
operationId: String,

obp-api/src/main/scala/code/api/v6_0_0/APIMethods600.scala

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3941,7 +3941,7 @@ trait APIMethods600 {
39413941
nameOf(addUserToGroup),
39423942
"POST",
39433943
"/users/USER_ID/group-entitlements",
3944-
"Grant User Group Entitlements",
3944+
"Grant User Membership to Group Entitlements",
39453945
s"""Grant the User Group Entitlements.
39463946
|
39473947
|This endpoint creates entitlements for every Role in the Group. If the user
@@ -8292,6 +8292,15 @@ trait APIMethods600 {
82928292
postJson.more_info_url.getOrElse(""),
82938293
postJson.terms_and_conditions_url.getOrElse(""),
82948294
postJson.description.getOrElse(""),
8295+
postJson.collection_id.getOrElse(""),
8296+
postJson.monthly_subscription_currency.getOrElse(""),
8297+
postJson.monthly_subscription_amount.getOrElse(""),
8298+
postJson.per_second_call_limit.getOrElse(-1L),
8299+
postJson.per_minute_call_limit.getOrElse(-1L),
8300+
postJson.per_hour_call_limit.getOrElse(-1L),
8301+
postJson.per_day_call_limit.getOrElse(-1L),
8302+
postJson.per_week_call_limit.getOrElse(-1L),
8303+
postJson.per_month_call_limit.getOrElse(-1L),
82958304
callContext
82968305
)
82978306
} yield {
@@ -8344,6 +8353,15 @@ trait APIMethods600 {
83448353
postJson.more_info_url.getOrElse(""),
83458354
postJson.terms_and_conditions_url.getOrElse(""),
83468355
postJson.description.getOrElse(""),
8356+
postJson.collection_id.getOrElse(""),
8357+
postJson.monthly_subscription_currency.getOrElse(""),
8358+
postJson.monthly_subscription_amount.getOrElse(""),
8359+
postJson.per_second_call_limit.getOrElse(-1L),
8360+
postJson.per_minute_call_limit.getOrElse(-1L),
8361+
postJson.per_hour_call_limit.getOrElse(-1L),
8362+
postJson.per_day_call_limit.getOrElse(-1L),
8363+
postJson.per_week_call_limit.getOrElse(-1L),
8364+
postJson.per_month_call_limit.getOrElse(-1L),
83478365
callContext
83488366
)
83498367
} yield {
@@ -8473,6 +8491,7 @@ trait APIMethods600 {
84738491
(Full(u), callContext) <- authenticatedAccess(cc)
84748492
_ <- NewStyle.function.hasEntitlement(bankId.value, u.userId, canDeleteApiProduct, callContext)
84758493
_ <- NewStyle.function.getBank(bankId, callContext)
8494+
(_, callContext) <- NewStyle.function.deleteApiProductAttributesByBankIdAndCode(bankId.value, apiProductCode, callContext)
84768495
(_, callContext) <- NewStyle.function.deleteApiProduct(bankId.value, apiProductCode, callContext)
84778496
} yield {
84788497
(Full(true), HttpCode.`204`(callContext))

obp-api/src/main/scala/code/api/v6_0_0/JSONFactory6.0.0.scala

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -764,7 +764,16 @@ case class PostPutApiProductJsonV600(
764764
category: Option[String],
765765
more_info_url: Option[String],
766766
terms_and_conditions_url: Option[String],
767-
description: Option[String]
767+
description: Option[String],
768+
collection_id: Option[String],
769+
monthly_subscription_currency: Option[String],
770+
monthly_subscription_amount: Option[String],
771+
per_second_call_limit: Option[Long],
772+
per_minute_call_limit: Option[Long],
773+
per_hour_call_limit: Option[Long],
774+
per_day_call_limit: Option[Long],
775+
per_week_call_limit: Option[Long],
776+
per_month_call_limit: Option[Long]
768777
)
769778

770779
case class ApiProductJsonV600(
@@ -777,6 +786,15 @@ case class ApiProductJsonV600(
777786
more_info_url: String,
778787
terms_and_conditions_url: String,
779788
description: String,
789+
collection_id: String,
790+
monthly_subscription_currency: String,
791+
monthly_subscription_amount: String,
792+
per_second_call_limit: Long,
793+
per_minute_call_limit: Long,
794+
per_hour_call_limit: Long,
795+
per_day_call_limit: Long,
796+
per_week_call_limit: Long,
797+
per_month_call_limit: Long,
780798
attributes: Option[List[ApiProductAttributeResponseJsonV600]]
781799
)
782800

@@ -2048,6 +2066,15 @@ object JSONFactory600 extends CustomJsonFormats with MdcLoggable {
20482066
more_info_url = product.moreInfoUrl,
20492067
terms_and_conditions_url = product.termsAndConditionsUrl,
20502068
description = product.description,
2069+
collection_id = product.collectionId,
2070+
monthly_subscription_currency = product.monthlySubscriptionCurrency,
2071+
monthly_subscription_amount = product.monthlySubscriptionAmount,
2072+
per_second_call_limit = product.perSecondCallLimit,
2073+
per_minute_call_limit = product.perMinuteCallLimit,
2074+
per_hour_call_limit = product.perHourCallLimit,
2075+
per_day_call_limit = product.perDayCallLimit,
2076+
per_week_call_limit = product.perWeekCallLimit,
2077+
per_month_call_limit = product.perMonthCallLimit,
20512078
attributes = attributes.map(_.map(createApiProductAttributeResponseJsonV600))
20522079
)
20532080
}

obp-api/src/main/scala/code/apiproduct/ApiProduct.scala

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,15 @@ class ApiProduct extends ApiProductTrait with LongKeyedMapper[ApiProduct] with I
1515
object MoreInfoUrl extends MappedString(this, 2000)
1616
object TermsAndConditionsUrl extends MappedString(this, 2000)
1717
object Description extends MappedString(this, 2000)
18+
object CollectionId extends MappedString(this, 50)
19+
object MonthlySubscriptionCurrency extends MappedString(this, 3)
20+
object MonthlySubscriptionAmount extends MappedString(this, 50)
21+
object PerSecondCallLimit extends MappedLong(this) { override def defaultValue = -1L }
22+
object PerMinuteCallLimit extends MappedLong(this) { override def defaultValue = -1L }
23+
object PerHourCallLimit extends MappedLong(this) { override def defaultValue = -1L }
24+
object PerDayCallLimit extends MappedLong(this) { override def defaultValue = -1L }
25+
object PerWeekCallLimit extends MappedLong(this) { override def defaultValue = -1L }
26+
object PerMonthCallLimit extends MappedLong(this) { override def defaultValue = -1L }
1827

1928
override def apiProductId: String = ApiProductId.get
2029
override def bankId: String = BankId.get
@@ -25,6 +34,15 @@ class ApiProduct extends ApiProductTrait with LongKeyedMapper[ApiProduct] with I
2534
override def moreInfoUrl: String = MoreInfoUrl.get
2635
override def termsAndConditionsUrl: String = TermsAndConditionsUrl.get
2736
override def description: String = Description.get
37+
override def collectionId: String = CollectionId.get
38+
override def monthlySubscriptionCurrency: String = MonthlySubscriptionCurrency.get
39+
override def monthlySubscriptionAmount: String = MonthlySubscriptionAmount.get
40+
override def perSecondCallLimit: Long = PerSecondCallLimit.get
41+
override def perMinuteCallLimit: Long = PerMinuteCallLimit.get
42+
override def perHourCallLimit: Long = PerHourCallLimit.get
43+
override def perDayCallLimit: Long = PerDayCallLimit.get
44+
override def perWeekCallLimit: Long = PerWeekCallLimit.get
45+
override def perMonthCallLimit: Long = PerMonthCallLimit.get
2846
}
2947

3048
object ApiProduct extends ApiProduct with LongKeyedMetaMapper[ApiProduct] {
@@ -41,4 +59,13 @@ trait ApiProductTrait {
4159
def moreInfoUrl: String
4260
def termsAndConditionsUrl: String
4361
def description: String
62+
def collectionId: String
63+
def monthlySubscriptionCurrency: String
64+
def monthlySubscriptionAmount: String
65+
def perSecondCallLimit: Long
66+
def perMinuteCallLimit: Long
67+
def perHourCallLimit: Long
68+
def perDayCallLimit: Long
69+
def perWeekCallLimit: Long
70+
def perMonthCallLimit: Long
4471
}

obp-api/src/main/scala/code/apiproduct/ApiProductsProvider.scala

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,16 @@ trait ApiProductsProvider {
1414
category: String,
1515
moreInfoUrl: String,
1616
termsAndConditionsUrl: String,
17-
description: String
17+
description: String,
18+
collectionId: String,
19+
monthlySubscriptionCurrency: String,
20+
monthlySubscriptionAmount: String,
21+
perSecondCallLimit: Long,
22+
perMinuteCallLimit: Long,
23+
perHourCallLimit: Long,
24+
perDayCallLimit: Long,
25+
perWeekCallLimit: Long,
26+
perMonthCallLimit: Long
1827
): Box[ApiProductTrait]
1928

2029
def getApiProductByBankIdAndCode(
@@ -42,7 +51,16 @@ object MappedApiProductsProvider extends MdcLoggable with ApiProductsProvider {
4251
category: String,
4352
moreInfoUrl: String,
4453
termsAndConditionsUrl: String,
45-
description: String
54+
description: String,
55+
collectionId: String,
56+
monthlySubscriptionCurrency: String,
57+
monthlySubscriptionAmount: String,
58+
perSecondCallLimit: Long,
59+
perMinuteCallLimit: Long,
60+
perHourCallLimit: Long,
61+
perDayCallLimit: Long,
62+
perWeekCallLimit: Long,
63+
perMonthCallLimit: Long
4664
): Box[ApiProductTrait] = {
4765
val existing = ApiProduct.find(
4866
By(ApiProduct.BankId, bankId),
@@ -58,6 +76,15 @@ object MappedApiProductsProvider extends MdcLoggable with ApiProductsProvider {
5876
.MoreInfoUrl(moreInfoUrl)
5977
.TermsAndConditionsUrl(termsAndConditionsUrl)
6078
.Description(description)
79+
.CollectionId(collectionId)
80+
.MonthlySubscriptionCurrency(monthlySubscriptionCurrency)
81+
.MonthlySubscriptionAmount(monthlySubscriptionAmount)
82+
.PerSecondCallLimit(perSecondCallLimit)
83+
.PerMinuteCallLimit(perMinuteCallLimit)
84+
.PerHourCallLimit(perHourCallLimit)
85+
.PerDayCallLimit(perDayCallLimit)
86+
.PerWeekCallLimit(perWeekCallLimit)
87+
.PerMonthCallLimit(perMonthCallLimit)
6188
.saveMe()
6289
)
6390
case _ =>
@@ -72,6 +99,15 @@ object MappedApiProductsProvider extends MdcLoggable with ApiProductsProvider {
7299
.MoreInfoUrl(moreInfoUrl)
73100
.TermsAndConditionsUrl(termsAndConditionsUrl)
74101
.Description(description)
102+
.CollectionId(collectionId)
103+
.MonthlySubscriptionCurrency(monthlySubscriptionCurrency)
104+
.MonthlySubscriptionAmount(monthlySubscriptionAmount)
105+
.PerSecondCallLimit(perSecondCallLimit)
106+
.PerMinuteCallLimit(perMinuteCallLimit)
107+
.PerHourCallLimit(perHourCallLimit)
108+
.PerDayCallLimit(perDayCallLimit)
109+
.PerWeekCallLimit(perWeekCallLimit)
110+
.PerMonthCallLimit(perMonthCallLimit)
75111
.saveMe()
76112
)
77113
}

obp-api/src/main/scala/code/apiproductattribute/ApiProductAttributesProvider.scala

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,11 @@ trait ApiProductAttributesProvider {
2828
def deleteApiProductAttribute(
2929
apiProductAttributeId: String
3030
): Box[Boolean]
31+
32+
def deleteApiProductAttributesByBankIdAndCode(
33+
bankId: String,
34+
apiProductCode: String
35+
): Box[Boolean]
3136
}
3237

3338
object MappedApiProductAttributesProvider extends MdcLoggable with ApiProductAttributesProvider {
@@ -107,4 +112,17 @@ object MappedApiProductAttributesProvider extends MdcLoggable with ApiProductAtt
107112
): Box[Boolean] = {
108113
ApiProductAttribute.find(By(ApiProductAttribute.ApiProductAttributeId, apiProductAttributeId)).map(_.delete_!)
109114
}
115+
116+
override def deleteApiProductAttributesByBankIdAndCode(
117+
bankId: String,
118+
apiProductCode: String
119+
): Box[Boolean] = {
120+
tryo {
121+
ApiProductAttribute.findAll(
122+
By(ApiProductAttribute.BankId, bankId),
123+
By(ApiProductAttribute.ApiProductCode, apiProductCode)
124+
).foreach(_.delete_!)
125+
true
126+
}
127+
}
110128
}

0 commit comments

Comments
 (0)