Fix some functions still using integers, and use division for selling res

This commit is contained in:
Joseph Ferano 2023-04-21 20:00:35 +07:00
parent 40060686a0
commit 9f01712230

View File

@ -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,