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

View File

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