Files
tcg-server/cards/cards.controller.js
yaoyanwei 4b2bb35c20 init
2025-08-04 16:25:38 +08:00

135 lines
3.5 KiB
JavaScript

const CardModel = require('../cards/cards.model');
const Activity = require("../activity/activity.model");
const config = require('../config');
exports.AddCard = async(req, res) =>
{
var tid = req.body.tid;
var type = req.body.type;
var team = req.body.team;
var rarity = req.body.rarity || "";
var mana = req.body.mana || 0;
var attack = req.body.attack || 0;
var hp = req.body.hp || 0;
var cost = req.body.cost || 1;
var packs = req.body.packs || [];
if(!tid || typeof tid !== "string")
return res.status(400).send({error: "Invalid parameters"});
if(!type || typeof type !== "string")
return res.status(400).send({error: "Invalid parameters"});
if(!team || typeof team !== "string")
return res.status(400).send({error: "Invalid parameters"});
if(!rarity || typeof rarity !== "string")
return res.status(400).send({error: "Invalid parameters"});
if(!Number.isInteger(mana) || !Number.isInteger(attack) || !Number.isInteger(hp) || !Number.isInteger(cost))
return res.status(400).send({ error: "Invalid parameters" });
if(packs && !Array.isArray(packs))
return res.status(400).send({error: "Invalid parameters"});
var data = {
tid: tid,
type: type,
team: team,
rarity: rarity,
mana: mana,
attack: attack,
hp: hp,
cost: cost,
packs: packs,
}
//Update or create
var card = await CardModel.get(tid);
if(card)
card = await CardModel.update(card, data);
else
card = await CardModel.create(data);
if(!card)
return res.status(500).send({error: "Error updating card"});
return res.status(200).send(data);
};
exports.AddCardList = async(req, res) =>
{
var cards = req.body.cards;
if(!Array.isArray(cards))
return res.status(400).send({error: "Invalid parameters"});
var ocards = [];
for(var i=0; i<cards.length; i++)
{
var card = cards[i];
if(card && card.tid && card.type && card.team)
{
var data = {
tid: card.tid,
type: card.type,
team: card.team,
rarity: card.rarity || "",
mana: card.mana || 0,
attack: card.attack || 0,
hp: card.hp || 0,
cost: card.cost || 0,
packs: card.packs || [],
}
var ccard = await CardModel.get(card.tid);
if(ccard)
ccard = await CardModel.update(ccard, data);
else
ccard = await CardModel.create(data);
ocards.push(ccard);
}
}
return res.status(200).send(ocards);
};
exports.DeleteCard = async(req, res) =>
{
CardModel.remove(req.params.tid);
return res.status(204).send({});
};
exports.DeleteAll = async(req, res) =>
{
CardModel.removeAll();
return res.status(204).send({});
};
exports.GetCard = async(req, res) =>
{
var tid = req.params.tid;
if(!tid)
return res.status(400).send({error: "Invalid parameters"});
var card = await CardModel.get(tid);
if(!card)
return res.status(404).send({error: "Card not found: " + tid});
return res.status(200).send(card.toObj());
};
exports.GetAll = async(req, res) =>
{
var cards = await CardModel.getAll();
for(var i=0; i<cards.length; i++){
cards[i] = cards[i].toObj();
}
return res.status(200).send(cards);
};