Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| ee51cb7e2a | |||
| 40120c7027 | |||
| cfd5b8a4f3 | |||
| 3b93e328d5 | |||
| 1fd858287d | |||
| e370f5bbb7 | |||
| 3e492475c0 |
@@ -134,9 +134,11 @@ class CurrencyRate extends Model
|
||||
|
||||
if (is_array($currency)) {
|
||||
|
||||
$i = 1;
|
||||
foreach ($currency as $curr) {
|
||||
|
||||
dispatch(fn () => self::timeSeriesRates($curr, $start, $end));
|
||||
dispatch(fn () => self::timeSeriesRates($curr, $start, $end))->delay(now()->addSeconds(30 * $i));
|
||||
$i++;
|
||||
}
|
||||
|
||||
return [];
|
||||
|
||||
@@ -99,8 +99,11 @@ class DailyChange extends Model
|
||||
'tx1.quantity',
|
||||
])
|
||||
->selectRaw("(CASE
|
||||
WHEN tx1.transaction_type = 'BUY'
|
||||
THEN COALESCE(cr.rate, 1)
|
||||
WHEN
|
||||
tx1.transaction_type = 'BUY'
|
||||
OR SUM(tx1.cost_basis_base) = 0
|
||||
THEN
|
||||
COALESCE(cr.rate, 1)
|
||||
ELSE (
|
||||
SELECT
|
||||
SUM(COALESCE(cr2.rate, 1) * buy.cost_basis_base)
|
||||
|
||||
@@ -302,8 +302,11 @@ class Holding extends Model
|
||||
])
|
||||
->selectRaw(
|
||||
"(CASE
|
||||
WHEN transactions.transaction_type = 'BUY'
|
||||
THEN COALESCE(cr.rate, 1)
|
||||
WHEN
|
||||
transactions.transaction_type = 'BUY'
|
||||
OR SUM(transactions.cost_basis_base) = 0
|
||||
THEN
|
||||
COALESCE(cr.rate, 1)
|
||||
ELSE (
|
||||
SELECT
|
||||
SUM(COALESCE(cr2.rate, 1) * buy.cost_basis_base)
|
||||
|
||||
@@ -8,6 +8,7 @@ use App\Models\Transaction;
|
||||
use Database\Seeders\CurrencySeeder;
|
||||
use Database\Seeders\MarketDataSeeder;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Query\Expression;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Artisan;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
@@ -24,10 +25,15 @@ return new class extends Migration
|
||||
* Add options column to users table
|
||||
*/
|
||||
Schema::table('users', function (Blueprint $table) {
|
||||
$table->json('options')->default(json_encode([
|
||||
'locale' => config('app.locale', 'en'),
|
||||
'display_currency' => config('investbrain.base_currency', 'USD'),
|
||||
]))->after('profile_photo_path');
|
||||
|
||||
$locale = config('app.locale', 'en');
|
||||
$currency = config('investbrain.base_currency', 'USD');
|
||||
|
||||
$default = config('database.default') === 'mysql'
|
||||
? new Expression("(JSON_OBJECT('locale', '{$locale}', 'display_currency', '{$currency}'))")
|
||||
: json_encode(['locale' => $locale, 'display_currency' => $currency]);
|
||||
|
||||
$table->json('options')->default($default)->after('profile_photo_path');
|
||||
});
|
||||
|
||||
/**
|
||||
|
||||
+15
-15
@@ -11,9 +11,9 @@ services:
|
||||
- 8000:80
|
||||
environment: # You can either use these properties OR an .env file. Do not use both!
|
||||
APP_URL: "http://localhost:8000"
|
||||
DB_CONNECTION: mysql
|
||||
DB_HOST: investbrain-mysql
|
||||
DB_PORT: 3306
|
||||
DB_CONNECTION: pgsql
|
||||
DB_HOST: investbrain-pgsql
|
||||
DB_PORT: 5432
|
||||
DB_DATABASE: investbrain
|
||||
DB_USERNAME: investbrain
|
||||
DB_PASSWORD: investbrain
|
||||
@@ -25,7 +25,7 @@ services:
|
||||
- investbrain-storage:/var/app/storage # You can use a volume...
|
||||
# - /path/to/storage:/var/app/storage:delegated # ...or you can use a path on host
|
||||
depends_on:
|
||||
- mysql
|
||||
- pgsql
|
||||
- redis
|
||||
networks:
|
||||
- investbrain-network
|
||||
@@ -40,22 +40,22 @@ services:
|
||||
- investbrain-redis:/data
|
||||
networks:
|
||||
- investbrain-network
|
||||
mysql:
|
||||
image: mysql:8.0
|
||||
container_name: investbrain-mysql
|
||||
pgsql:
|
||||
image: postgres:15-alpine
|
||||
container_name: investbrain-pgsql
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "5432:5432"
|
||||
environment:
|
||||
MYSQL_DATABASE: ${DB_DATABASE:-investbrain}
|
||||
MYSQL_USER: ${DB_USERNAME:-investbrain}
|
||||
MYSQL_PASSWORD: ${DB_PASSWORD:-investbrain}
|
||||
MYSQL_ROOT_PASSWORD: ${DB_PASSWORD:-investbrain}
|
||||
command:
|
||||
- --cte-max-recursion-depth=25000
|
||||
POSTGRES_DB: ${DB_DATABASE:-investbrain}
|
||||
POSTGRES_USER: ${DB_USERNAME:-investbrain}
|
||||
POSTGRES_PASSWORD: ${DB_PASSWORD:-investbrain}
|
||||
command: postgres -c log_min_messages=error
|
||||
volumes:
|
||||
- investbrain-mysql:/var/lib/mysql
|
||||
- investbrain-pgsql:/var/lib/postgresql/data
|
||||
networks:
|
||||
- investbrain-network
|
||||
volumes:
|
||||
investbrain-storage:
|
||||
investbrain-redis:
|
||||
investbrain-mysql:
|
||||
investbrain-pgsql:
|
||||
|
||||
+13
-3
@@ -3,7 +3,7 @@
|
||||
cd /var/app
|
||||
|
||||
# Starting Investbrain
|
||||
echo "CiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqICBJSUkgICBOICAgTiAgViAgIFYgIEVFRUVFICBTU1NTICBUVFRUVCAgQkJCQkIgICBSUlJSICAgIEFBQUFBICBJSUkgICBOICAgTiAgKgogICogICBJICAgIE5OICBOICBWICAgViAgRSAgICAgIFMgICAgICAgVCAgICBCICAgIEIgIFIgICBSICAgQSAgIEEgICBJICAgIE5OICBOICAqCiAgKiAgIEkgICAgTiBOIE4gIFYgICBWICBFRUVFICAgU1NTUyAgICBUICAgIEJCQkJCICAgUlJSUiAgICBBQUFBQSAgIEkgICAgTiBOIE4gICoKICAqICAgSSAgICBOICBOTiAgViAgIFYgIEUgICAgICAgICAgUyAgIFQgICAgQiAgICBCICBSICBSICAgIEEgICBBICAgSSAgICBOICBOTiAgKgogICogIElJSSAgIE4gICBOICAgVlZWICAgRUVFRUUgIFNTU1MgICAgVCAgICBCQkJCQiAgIFIgICBSICAgQSAgIEEgIElJSSAgIE4gICBOICAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICA=" | base64 -d
|
||||
echo "CuKWhOKWliAgICAgICAg4paXIOKWjCAgICAg4paYICAK4paQIOKWm+KWjOKWjOKWjOKWiOKWjOKWm+KWmOKWnOKWmOKWm+KWjOKWm+KWmOKWgOKWjOKWjOKWm+KWjArilp/ilpbilozilozilprilpjilpnilpbiloTilozilpDilpbilpnilozilowg4paI4paM4paM4paM4paMCg==" | base64 -d
|
||||
|
||||
echo -e "\n====================== Validating environment... ====================== "
|
||||
|
||||
@@ -54,7 +54,6 @@ RETRIES=12
|
||||
DELAY=5
|
||||
run_migrations() {
|
||||
sleep $DELAY
|
||||
# php artisan migrate --force
|
||||
output=$(php artisan migrate --force 2>/dev/null)
|
||||
if [[ $? -eq 0 ]]; then
|
||||
echo "$output"
|
||||
@@ -72,7 +71,18 @@ until run_migrations; do
|
||||
echo -e "\n > Waiting for database to be ready... retrying in $DELAY seconds. \n"
|
||||
done
|
||||
|
||||
echo -e "\n====================== Cleaning up... ====================== \n"
|
||||
|
||||
# Clear caches
|
||||
echo $(php artisan cache:clear)
|
||||
echo $(php artisan view:clear)
|
||||
echo $(php artisan route:clear)
|
||||
echo $(php artisan event:clear)
|
||||
|
||||
# Re-create caches
|
||||
echo $(php artisan route:cache)
|
||||
echo $(php artisan event:cache)
|
||||
|
||||
echo -e "\n====================== Spinning up Supervisor daemon... ====================== \n"
|
||||
|
||||
exec supervisord -c /etc/supervisor/conf.d/supervisord.conf
|
||||
|
||||
|
||||
Reference in New Issue
Block a user