1
0
Fork 0
mirror of https://github.com/correl/mage.git synced 2025-04-10 01:01:05 -09:00

DB: added numerical card number field for min/max query ();

This commit is contained in:
Oleg Agafonov 2021-11-14 01:27:58 +04:00
parent 23bcc9dbb5
commit a480e10bd8
2 changed files with 10 additions and 3 deletions
Mage/src/main/java/mage/cards/repository

View file

@ -40,6 +40,7 @@ public class CardCriteria {
private String sortBy; private String sortBy;
private Long start; private Long start;
private Long count; private Long count;
// compare numerical card numbers (123b -> 123)
private int minCardNumber; private int minCardNumber;
private int maxCardNumber; private int maxCardNumber;
@ -304,12 +305,12 @@ public class CardCriteria {
} }
if (minCardNumber != Integer.MIN_VALUE) { if (minCardNumber != Integer.MIN_VALUE) {
where.ge("cardNumber", minCardNumber); where.ge("cardNumberAsInt", minCardNumber);
clausesCount++; clausesCount++;
} }
if (maxCardNumber != Integer.MAX_VALUE) { if (maxCardNumber != Integer.MAX_VALUE) {
where.le("cardNumber", maxCardNumber); where.le("cardNumberAsInt", maxCardNumber);
clausesCount++; clausesCount++;
} }

View file

@ -46,6 +46,11 @@ public class CardInfo {
protected String setCode; protected String setCode;
@DatabaseField(indexName = "setCode_cardNumber_index") @DatabaseField(indexName = "setCode_cardNumber_index")
protected String cardNumber; protected String cardNumber;
/**
* Fast access to numerical card number (number without prefix/postfix: 123b -> 123)
*/
@DatabaseField(indexName = "cardNumberAsInt_index")
protected int cardNumberAsInt;
@DatabaseField(indexName = "className_index") @DatabaseField(indexName = "className_index")
protected String className; protected String className;
@DatabaseField @DatabaseField
@ -124,6 +129,7 @@ public class CardInfo {
this.name = card.getName(); this.name = card.getName();
this.lower_name = name.toLowerCase(Locale.ENGLISH); this.lower_name = name.toLowerCase(Locale.ENGLISH);
this.cardNumber = card.getCardNumber(); this.cardNumber = card.getCardNumber();
this.cardNumberAsInt = CardUtil.parseCardNumberAsInt(card.getCardNumber());
this.setCode = card.getExpansionSetCode(); this.setCode = card.getExpansionSetCode();
this.className = card.getClass().getCanonicalName(); this.className = card.getClass().getCanonicalName();
this.power = card.getPower().toString(); this.power = card.getPower().toString();
@ -424,7 +430,7 @@ public class CardInfo {
} }
public int getCardNumberAsInt() { public int getCardNumberAsInt() {
return CardUtil.parseCardNumberAsInt(cardNumber); return cardNumberAsInt;
} }
public boolean isSplitCard() { public boolean isSplitCard() {