From 9f01712230db3340c2e86a1ddcbce7b787d660bf Mon Sep 17 00:00:00 2001 From: Joseph Ferano Date: Fri, 21 Apr 2023 20:00:35 +0700 Subject: [PATCH] Fix some functions still using integers, and use division for selling res --- sql/procedures.sql | 41 +++++++++++++++++++++++------------------ 1 file changed, 23 insertions(+), 18 deletions(-) diff --git a/sql/procedures.sql b/sql/procedures.sql index c768844..59ef9de 100644 --- a/sql/procedures.sql +++ b/sql/procedures.sql @@ -8,6 +8,7 @@ as $$ declare new_uuid uuid; res_id integer; + currency_start_amount float8; begin if p_user_id is null then insert into users(name, wallet) values (p_name, p_wallet) @@ -17,7 +18,11 @@ begin insert into users(id, name, wallet) values (p_user_id, p_name, p_wallet); end if; - insert into bank_account(user_id, balance) values (new_uuid, 500); + select value into currency_start_amount + from game_constants + where key = 'MoonbucksStartAmount'; + + insert into bank_account(user_id, balance) values (new_uuid, currency_start_amount); insert into resource_account (resource_id, user_id, balance) select resource.id, new_uuid, 50 @@ -31,7 +36,7 @@ $$ language plpgsql; create or replace function get_accounts(user_id uuid) returns table ( id uuid, - "primaryBalance" integer, + "primaryBalance" float8, "resourceAccounts" json ) as $$ @@ -61,23 +66,23 @@ create or replace function sell_resources( ) returns table ( "resourceName" text, - "resourceAmount" integer, - "returnAmount" integer, + "resourceAmount" float8, + "returnAmount" float8, "saleResult" text ) as $$ declare resource jsonb; resource_name text; - resource_amount integer; - return_amount integer; + resource_amount float8; + return_amount float8; resource_sell_factor real; sale_result text; begin for resource in select * from jsonb_array_elements(p_resources) loop resource_name := resource ->> 'resourceType'; - resource_amount := (resource ->> 'resourceAmount')::integer; + resource_amount := (resource ->> 'resourceAmount')::float8; sale_result := null; begin @@ -98,7 +103,7 @@ begin where key = resource_name || 'ToMoonbucks'; update bank_account - set balance = balance + resource_amount * resource_sell_factor + set balance = balance + resource_amount / resource_sell_factor where user_id = p_user_id returning resource_amount * resource_sell_factor into return_amount; @@ -218,9 +223,9 @@ declare new_source_id uuid; res_id integer; address varchar; - price integer; - min_res integer; - max_res integer; + price float8; + min_res float8; + max_res float8; begin select value into price from game_constants where key = 'price'; @@ -262,7 +267,7 @@ returns table ( id uuid, name varchar, wallet varchar, - balance integer + balance float8 ) as $$ begin @@ -283,7 +288,7 @@ create or replace function purchase_item( as $$ declare new_item_id uuid; - item_price integer; + item_price float8; begin select price into item_price from store_item where store_item.id = p_store_item_id; @@ -314,7 +319,7 @@ as $$ declare upgrade_event_id uuid; item_insert_id uuid; - upgrade_price integer; + upgrade_price float8; begin select upgrade_item.price into upgrade_price @@ -361,7 +366,7 @@ declare inv_id uuid; stake_id uuid; stake_created_at timestamp; - total_stake_amount integer; + total_stake_amount float8; found_resource_well_id uuid; begin @@ -425,7 +430,7 @@ returns table ( "wellId" uuid, "inventoryItemId" uuid, "resourceType" varchar, - "stakeAmount" integer, + "stakeAmount" float8, "stakeTime" timestamp with time zone, "durationInMins" integer, unclaimed bool @@ -459,8 +464,8 @@ declare stake record; claim_event_id uuid; stake_end_time timestamp; - resource_supply integer; - final_supply integer; + resource_supply float8; + final_supply float8; begin select staking_event.id,