calculating refund inside transaction query db function to calculate price per minute for app binded all kick contract query to prevent sql injection proper logging for kick contract fix table schema app_node typo and default time on deleted_app removed wrapper contract struct removed migrating timer.sql fixed some clippy warnings
37 lines
1005 B
SQL
37 lines
1005 B
SQL
DEFINE FUNCTION OVERWRITE fn::vm_price_per_minute(
|
|
$vm_id: record
|
|
) {
|
|
LET $vm = (select * from $vm_id)[0];
|
|
LET $ip_price = IF $vm.public_ipv4.len() > 0 { 10 } ELSE { 0 };
|
|
RETURN (
|
|
($vm.vcpus * 10) + (($vm.memory_mb + 256) / 200) + ($vm.disk_size_gb / 10) + $ip_price)
|
|
* $vm.price_per_unit;
|
|
};
|
|
|
|
DEFINE FUNCTION OVERWRITE fn::delete_vm(
|
|
$vm_id: record
|
|
) {
|
|
LET $vm = (select * from $vm_id)[0];
|
|
LET $account = $vm.in;
|
|
LET $deleted_vm = $vm.patch([{
|
|
'op': 'replace',
|
|
'path': 'id',
|
|
'value': type::record("deleted_vm:" + record::id($vm.id))
|
|
}]);
|
|
IF $vm.locked_nano >= 0 {
|
|
UPDATE $account SET balance += $vm.locked_nano;
|
|
};
|
|
INSERT RELATION INTO deleted_vm ( $deleted_vm );
|
|
DELETE $vm.id;
|
|
};
|
|
|
|
DEFINE FUNCTION OVERWRITE fn::app_price_per_minute(
|
|
$app_id: record
|
|
) {
|
|
LET $app = (select * from $app_id)[0];
|
|
RETURN
|
|
(($app.vcpus * 5) +
|
|
($app.memory_mb / 200) +
|
|
($app.disk_size_gb / 10))
|
|
* $app.price_per_unit;
|
|
}; |