Compare commits
No commits in common. "005a366883c4d7ce050904845ab1b97909fb6065" and "74cdf818d1de23c9bcbb229a438165b9889ca7e3" have entirely different histories.
005a366883
...
74cdf818d1
10 changed files with 21 additions and 95 deletions
|
@ -1,8 +0,0 @@
|
||||||
CREATE TABLE `claim` (
|
|
||||||
`Id` varchar(255) NOT NULL,
|
|
||||||
`WhenCreated` datetime NOT NULL,
|
|
||||||
`WhenUpdated` datetime NOT NULL,
|
|
||||||
`ClaimId` varchar(255) NOT NULL,
|
|
||||||
`InventoryId` varchar(255) NOT NULL,
|
|
||||||
PRIMARY KEY (`Id`)
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
|
|
@ -1,14 +0,0 @@
|
||||||
INSERT INTO claim (
|
|
||||||
Id,
|
|
||||||
WhenCreated,
|
|
||||||
WhenUpdated,
|
|
||||||
ClaimId,
|
|
||||||
InventoryId
|
|
||||||
)
|
|
||||||
SELECT
|
|
||||||
UUID(),
|
|
||||||
NOW(),
|
|
||||||
NOW(),
|
|
||||||
ClaimId,
|
|
||||||
Id
|
|
||||||
FROM inventory;
|
|
|
@ -1,2 +0,0 @@
|
||||||
ALTER TABLE inventory
|
|
||||||
DROP ClaimId;
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "card-drop",
|
"name": "card-drop",
|
||||||
"version": "0.1.5",
|
"version": "0.1.4",
|
||||||
"main": "./dist/bot.js",
|
"main": "./dist/bot.js",
|
||||||
"typings": "./dist",
|
"typings": "./dist",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|
|
@ -2,7 +2,6 @@ import { ButtonInteraction } from "discord.js";
|
||||||
import { ButtonEvent } from "../type/buttonEvent";
|
import { ButtonEvent } from "../type/buttonEvent";
|
||||||
import Inventory from "../database/entities/app/Inventory";
|
import Inventory from "../database/entities/app/Inventory";
|
||||||
import { CoreClient } from "../client/client";
|
import { CoreClient } from "../client/client";
|
||||||
import { default as eClaim } from "../database/entities/app/Claim";
|
|
||||||
|
|
||||||
export default class Claim extends ButtonEvent {
|
export default class Claim extends ButtonEvent {
|
||||||
public override async execute(interaction: ButtonInteraction) {
|
public override async execute(interaction: ButtonInteraction) {
|
||||||
|
@ -10,36 +9,30 @@ export default class Claim extends ButtonEvent {
|
||||||
|
|
||||||
const cardNumber = interaction.customId.split(' ')[1];
|
const cardNumber = interaction.customId.split(' ')[1];
|
||||||
const claimId = interaction.customId.split(' ')[2];
|
const claimId = interaction.customId.split(' ')[2];
|
||||||
const droppedBy = interaction.customId.split(' ')[3];
|
|
||||||
const userId = interaction.user.id;
|
const userId = interaction.user.id;
|
||||||
|
|
||||||
const claimed = await eClaim.FetchOneByClaimId(claimId);
|
const claimed = await Inventory.FetchOneByClaimId(claimId);
|
||||||
|
|
||||||
if (claimed) {
|
if (claimed) {
|
||||||
await interaction.reply('This card has already been claimed');
|
await interaction.reply('This card has already been claimed');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (claimId == CoreClient.ClaimId && userId != droppedBy) {
|
if (claimId != CoreClient.ClaimId) {
|
||||||
await interaction.reply('The latest dropped card can only be claimed by the user who dropped it');
|
await interaction.reply('This card has expired');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
let inventory = await Inventory.FetchOneByCardNumberAndUserId(userId, cardNumber);
|
let inventory = await Inventory.FetchOneByCardNumberAndUserId(userId, cardNumber);
|
||||||
|
|
||||||
if (!inventory) {
|
if (!inventory) {
|
||||||
inventory = new Inventory(userId, cardNumber, 1);
|
inventory = new Inventory(userId, cardNumber, 1, claimId);
|
||||||
} else {
|
} else {
|
||||||
inventory.SetQuantity(inventory.Quantity + 1);
|
inventory.SetQuantity(inventory.Quantity + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
await inventory.Save(Inventory, inventory);
|
await inventory.Save(Inventory, inventory);
|
||||||
|
|
||||||
const claim = new eClaim(claimId);
|
|
||||||
claim.SetInventory(inventory);
|
|
||||||
|
|
||||||
await claim.Save(eClaim, claim);
|
|
||||||
|
|
||||||
await interaction.reply('Card claimed');
|
await interaction.reply('Card claimed');
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -45,7 +45,7 @@ export default class Reroll extends ButtonEvent {
|
||||||
|
|
||||||
row.addComponents(
|
row.addComponents(
|
||||||
new ButtonBuilder()
|
new ButtonBuilder()
|
||||||
.setCustomId(`claim ${randomCard.CardNumber} ${claimId} ${interaction.user.id}`)
|
.setCustomId(`claim ${randomCard.CardNumber} ${claimId}`)
|
||||||
.setLabel("Claim")
|
.setLabel("Claim")
|
||||||
.setStyle(ButtonStyle.Primary),
|
.setStyle(ButtonStyle.Primary),
|
||||||
new ButtonBuilder()
|
new ButtonBuilder()
|
||||||
|
|
|
@ -51,7 +51,7 @@ export default class Drop extends Command {
|
||||||
|
|
||||||
row.addComponents(
|
row.addComponents(
|
||||||
new ButtonBuilder()
|
new ButtonBuilder()
|
||||||
.setCustomId(`claim ${randomCard.CardNumber} ${claimId} ${interaction.user.id}`)
|
.setCustomId(`claim ${randomCard.CardNumber} ${claimId}`)
|
||||||
.setLabel("Claim")
|
.setLabel("Claim")
|
||||||
.setStyle(ButtonStyle.Primary),
|
.setStyle(ButtonStyle.Primary),
|
||||||
new ButtonBuilder()
|
new ButtonBuilder()
|
||||||
|
@ -76,6 +76,7 @@ export default class Drop extends Command {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
CoreClient.ClaimId = claimId;
|
CoreClient.ClaimId = claimId;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,31 +0,0 @@
|
||||||
import { Column, Entity, ManyToOne } from "typeorm";
|
|
||||||
import AppBaseEntity from "../../../contracts/AppBaseEntity";
|
|
||||||
import Inventory from "./Inventory";
|
|
||||||
import AppDataSource from "../../dataSources/appDataSource";
|
|
||||||
|
|
||||||
@Entity()
|
|
||||||
export default class Claim extends AppBaseEntity {
|
|
||||||
constructor(claimId: string) {
|
|
||||||
super();
|
|
||||||
|
|
||||||
this.ClaimId = claimId;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Column()
|
|
||||||
ClaimId: string;
|
|
||||||
|
|
||||||
@ManyToOne(() => Inventory, x => x.Claims)
|
|
||||||
Inventory: Inventory;
|
|
||||||
|
|
||||||
public SetInventory(inventory: Inventory) {
|
|
||||||
this.Inventory = inventory;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static async FetchOneByClaimId(claimId: string): Promise<Claim | null> {
|
|
||||||
const repository = AppDataSource.getRepository(Claim);
|
|
||||||
|
|
||||||
const single = await repository.findOne({ where: { ClaimId: claimId }});
|
|
||||||
|
|
||||||
return single;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,16 +1,16 @@
|
||||||
import { Column, Entity, OneToMany } from "typeorm";
|
import { Column, Entity } from "typeorm";
|
||||||
import AppBaseEntity from "../../../contracts/AppBaseEntity";
|
import AppBaseEntity from "../../../contracts/AppBaseEntity";
|
||||||
import AppDataSource from "../../dataSources/appDataSource";
|
import AppDataSource from "../../dataSources/appDataSource";
|
||||||
import Claim from "./Claim";
|
|
||||||
|
|
||||||
@Entity()
|
@Entity()
|
||||||
export default class Inventory extends AppBaseEntity {
|
export default class Inventory extends AppBaseEntity {
|
||||||
constructor(userId: string, cardNumber: string, quantity: number) {
|
constructor(userId: string, cardNumber: string, quantity: number, claimId: string) {
|
||||||
super();
|
super();
|
||||||
|
|
||||||
this.UserId = userId;
|
this.UserId = userId;
|
||||||
this.CardNumber = cardNumber;
|
this.CardNumber = cardNumber;
|
||||||
this.Quantity = quantity;
|
this.Quantity = quantity;
|
||||||
|
this.ClaimId = claimId;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Column()
|
@Column()
|
||||||
|
@ -22,17 +22,13 @@ export default class Inventory extends AppBaseEntity {
|
||||||
@Column()
|
@Column()
|
||||||
Quantity: number;
|
Quantity: number;
|
||||||
|
|
||||||
@OneToMany(() => Claim, x => x.Inventory)
|
@Column()
|
||||||
Claims: Claim[];
|
ClaimId: string;
|
||||||
|
|
||||||
public SetQuantity(quantity: number) {
|
public SetQuantity(quantity: number) {
|
||||||
this.Quantity = quantity;
|
this.Quantity = quantity;
|
||||||
}
|
}
|
||||||
|
|
||||||
public AddClaim(claim: Claim) {
|
|
||||||
this.Claims.push(claim);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static async FetchOneByCardNumberAndUserId(userId: string, cardNumber: string): Promise<Inventory | null> {
|
public static async FetchOneByCardNumberAndUserId(userId: string, cardNumber: string): Promise<Inventory | null> {
|
||||||
const repository = AppDataSource.getRepository(Inventory);
|
const repository = AppDataSource.getRepository(Inventory);
|
||||||
|
|
||||||
|
@ -40,4 +36,12 @@ export default class Inventory extends AppBaseEntity {
|
||||||
|
|
||||||
return single;
|
return single;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static async FetchOneByClaimId(claimId: string): Promise<Inventory | null> {
|
||||||
|
const repository = AppDataSource.getRepository(Inventory);
|
||||||
|
|
||||||
|
const single = await repository.findOne({ where: { ClaimId: claimId }});
|
||||||
|
|
||||||
|
return single;
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -1,17 +0,0 @@
|
||||||
import { MigrationInterface, QueryRunner } from "typeorm"
|
|
||||||
import MigrationHelper from "../../../../helpers/MigrationHelper"
|
|
||||||
|
|
||||||
export class CreateClaim1694609771821 implements MigrationInterface {
|
|
||||||
|
|
||||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
|
||||||
MigrationHelper.Up('1694609771821-CreateClaim', '0.1.5', [
|
|
||||||
'01-CreateClaim',
|
|
||||||
'02-MoveToClaim',
|
|
||||||
'03-AlterInventory',
|
|
||||||
], queryRunner);
|
|
||||||
}
|
|
||||||
|
|
||||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
Loading…
Reference in a new issue