fix authentication and refund on delete vm refactor app daemon register to get delete app req db function for delete app sample environment variable extensive tests for delete app and vm refactor test utilities
54 lines
1.5 KiB
SQL
54 lines
1.5 KiB
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 );
|
|
RETURN DELETE $vm.id RETURN BEFORE;
|
|
};
|
|
|
|
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;
|
|
};
|
|
|
|
DEFINE FUNCTION OVERWRITE fn::delete_app(
|
|
$app_id: record
|
|
) {
|
|
LET $app = (select * from $app_id)[0];
|
|
LET $account = $app.in;
|
|
LET $deleted_app = $app.patch([{
|
|
'op': 'replace',
|
|
'path': 'id',
|
|
'value': type::record("deleted_app:" + record::id($app.id))
|
|
}]);
|
|
IF $app.locked_nano >= 0 {
|
|
UPDATE $account SET balance += $app.locked_nano;
|
|
};
|
|
INSERT RELATION INTO deleted_app ( $deleted_app );
|
|
RETURN DELETE $app.id RETURN BEFORE;
|
|
}; |