fix accounts balance check;

This commit is contained in:
ntr 2019-07-13 21:31:48 +10:00
parent 2fa7310aaa
commit 02719884c2
2 changed files with 18 additions and 15 deletions

View File

@ -1,5 +1,5 @@
exports.up = async knex => {
return knex.schema.createTable('accounts', table => {
await knex.schema.createTable('accounts', table => {
table.uuid('id').primary();
table.timestamps(true, true);
@ -23,8 +23,10 @@ exports.up = async knex => {
await knex.schema.raw(`
ALTER TABLE accounts
ADD CHECK (balance > 0);
ADD CHECK (balance >= 0);
`);
return true;
};
exports.down = async () => {};

View File

@ -18,8 +18,8 @@ pub const FREE_MTX: [MtxVariant; 1] = [
];
pub const SHOP_LISTINGS: [Listing; 2] = [
Listing { variant: MtxVariant::ArchitectureMolecular, credits: 10 },
Listing { variant: MtxVariant::ArchitectureInvader, credits: 10 },
Listing { variant: MtxVariant::Molecular, credits: 10 },
Listing { variant: MtxVariant::Invader, credits: 10 },
];
#[derive(Debug,Clone,PartialEq,Serialize,Deserialize)]
@ -37,8 +37,8 @@ pub struct Listing {
#[derive(Debug,Copy,Clone,PartialEq,Serialize,Deserialize)]
pub enum MtxVariant {
Rename,
ArchitectureMolecular,
ArchitectureInvader,
Molecular,
Invader,
}
impl MtxVariant {
@ -54,8 +54,8 @@ impl TryFrom<String> for MtxVariant {
fn try_from(v: String) -> Result<MtxVariant, Error> {
match v.as_ref() {
"Rename" => Ok(MtxVariant::Rename),
"ArchitectureMolecular" => Ok(MtxVariant::ArchitectureMolecular),
"ArchitectureInvader" => Ok(MtxVariant::ArchitectureInvader),
"Molecular" => Ok(MtxVariant::Molecular),
"Invader" => Ok(MtxVariant::Invader),
_ => Err(format_err!("mtx variant not found variant={:?}", v)),
}
}
@ -76,8 +76,8 @@ pub fn apply(tx: &mut Transaction, account: &Account, variant: MtxVariant, const
construct = construct.new_img();
match mtx.variant {
MtxVariant::ArchitectureInvader => img::invader_write(construct.img)?,
MtxVariant::ArchitectureMolecular => img::molecular_write(construct.img)?,
MtxVariant::Invader => img::invader_write(construct.img)?,
MtxVariant::Molecular => img::molecular_write(construct.img)?,
MtxVariant::Rename => unimplemented!(),
// _ => unimplemented!(),
};
@ -114,8 +114,8 @@ impl Mtx {
pub fn new(variant: MtxVariant, account: Uuid) -> Mtx {
match variant {
_ => Mtx { id: Uuid::new_v4(), account, variant },
// MtxVariant::ArchitectureInvader => Mtx { id: Uuid::new_v4(), account, variant: self },
// MtxVariant::ArchitectureMolecular => Mtx { id: Uuid::new_v4(), account, variant: self },
// MtxVariant::Invader => Mtx { id: Uuid::new_v4(), account, variant: self },
// MtxVariant::Molecular => Mtx { id: Uuid::new_v4(), account, variant: self },
}
}
@ -178,7 +178,7 @@ impl Mtx {
pub fn account_shop(tx: &mut Transaction, account: &Account) -> Result<Shop, Error> {
let query = "
SELECT variant
SELECT id, variant
FROM mtx
WHERE account = $1;
";
@ -189,11 +189,12 @@ pub fn account_shop(tx: &mut Transaction, account: &Account) -> Result<Shop, Err
let mut owned = vec![];
for row in result.iter() {
let v_str: String = row.get(0);
let id: Uuid = row.get(0);
let v_str: String = row.get(1);
let variant = match MtxVariant::try_from(v_str) {
Ok(v) => v,
Err(e) => {
warn!("{:?}", e);
warn!("id={:?} {:?}", id, e);
continue;
},
};