Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/dependency-review.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:
contents: read
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- uses: actions/dependency-review-action@a1d282b36b6f3519aa1f3fc636f609c47dddb294 # v5.0.0
with:
config-file: .github/dependency-review-config.yaml
2 changes: 1 addition & 1 deletion .github/workflows/release-button.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ jobs:
contents: read
pull-requests: write
steps:
- uses: actions/checkout@v7
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
fetch-depth: 0
- name: Open PR from Dev to Prod
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@ jobs:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v7
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

- name: Setup PHP
uses: shivammathur/setup-php@v2
uses: shivammathur/setup-php@f3e473d116dcccaddc5834248c87452386958240 # 2.37.2
with:
php-version: '8.4'
extensions: mbstring, dom, fileinfo, sqlite3
Expand Down
11 changes: 11 additions & 0 deletions app/Filament/Admin/Resources/PolydockStoreAppResource.php
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,11 @@ public static function form(Schema $schema): Schema
->label('Available for Trials')
->required()
->columnSpanFull(),
Toggle::make('listed_in_marketplace')
->label('Listed in Marketplace')
->helperText('Controls whether this app appears in the public /api/regions listing.')
->default(false)
->columnSpanFull(),
Section::make('Pre-warm Settings')
->description('Controls how unallocated pre-warm instances are refreshed over time.')
->schema([
Expand Down Expand Up @@ -355,6 +360,9 @@ public static function table(Table $table): Table
IconColumn::make('available_for_trials')
->label('Trials')
->boolean(),
IconColumn::make('listed_in_marketplace')
->label('Listed')
->boolean(),
TextColumn::make('created_at')
->dateTime()
->sortable()
Expand Down Expand Up @@ -576,6 +584,9 @@ public static function infolist(Schema $schema): Schema
IconEntry::make('available_for_trials')
->label('Available for Trials')
->boolean(),
IconEntry::make('listed_in_marketplace')
->label('Listed in Marketplace')
->boolean(),
TextEntry::make('trial_duration_days')
->label('Trial Duration')
->suffix(' days')
Expand Down
3 changes: 2 additions & 1 deletion app/Http/Controllers/Api/RegionsController.php
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@ public function index(): JsonResponse
->where('status', PolydockStoreStatusEnum::PUBLIC)
->where('listed_in_marketplace', true)
->with(['apps' => function ($query): void {
$query->where('status', PolydockStoreAppStatusEnum::AVAILABLE);
$query->where('status', PolydockStoreAppStatusEnum::AVAILABLE)
->where('listed_in_marketplace', true);
}])
->get()
->map(fn ($store): array => [
Expand Down
2 changes: 2 additions & 0 deletions app/Models/PolydockStoreApp.php
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,7 @@ class PolydockStoreApp extends Model
'status',
'uuid',
'available_for_trials',
'listed_in_marketplace',
'target_unallocated_app_instances',
'trial_duration_days',
'send_midtrial_email',
Expand Down Expand Up @@ -594,6 +595,7 @@ protected function casts(): array
'status' => PolydockStoreAppStatusEnum::class,
'app_config' => 'array',
'available_for_trials' => 'boolean',
'listed_in_marketplace' => 'boolean',
'target_unallocated_app_instances' => 'integer',
'send_midtrial_email' => 'boolean',
'send_one_day_left_email' => 'boolean',
Expand Down
1 change: 1 addition & 0 deletions database/factories/PolydockStoreAppFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ public function definition(): array
'lagoon_deploy_branch' => 'main',
'status' => PolydockStoreAppStatusEnum::AVAILABLE,
'available_for_trials' => fake()->boolean(),
'listed_in_marketplace' => true,
];
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration
{
public function up(): void
{
Schema::table('polydock_store_apps', function (Blueprint $table): void {
$table->boolean('listed_in_marketplace')->default(false)->after('available_for_trials');
});
}

public function down(): void
{
Schema::table('polydock_store_apps', function (Blueprint $table): void {
$table->dropColumn('listed_in_marketplace');
});
}
};
4 changes: 4 additions & 0 deletions database/seeders/AmazeeTrialSeeder.php
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,7 @@ public function getStoreAppCKEditor($store, $namePrefix): void
'lagoon_deploy_branch' => 'main',
'status' => PolydockStoreAppStatusEnum::AVAILABLE,
'available_for_trials' => true,
'listed_in_marketplace' => true,
'target_unallocated_app_instances' => 0,
'lagoon_post_deploy_script' => '/app/.lagoon/scripts/polydock_post_deploy.sh',
'lagoon_claim_script' => '/app/.lagoon/scripts/polydock_claim.sh',
Expand All @@ -183,6 +184,7 @@ public function getStoreAppCategorizePages($store, $namePrefix): void
'lagoon_deploy_branch' => 'main',
'status' => PolydockStoreAppStatusEnum::AVAILABLE,
'available_for_trials' => true,
'listed_in_marketplace' => true,
'target_unallocated_app_instances' => 0,
'lagoon_post_deploy_script' => '/app/.lagoon/scripts/polydock_post_deploy.sh',
'lagoon_claim_script' => '/app/.lagoon/scripts/polydock_claim.sh',
Expand All @@ -203,6 +205,7 @@ public function getStoreAppSearch($store, $namePrefix): void
'lagoon_deploy_branch' => 'main',
'status' => PolydockStoreAppStatusEnum::AVAILABLE,
'available_for_trials' => true,
'listed_in_marketplace' => true,
'target_unallocated_app_instances' => 0,
'lagoon_post_deploy_script' => '/app/.lagoon/scripts/polydock_post_deploy.sh',
'lagoon_claim_script' => '/app/.lagoon/scripts/polydock_claim.sh',
Expand All @@ -223,6 +226,7 @@ public function getStoreAppGeneric($store, $namePrefix): void
'lagoon_deploy_branch' => 'main',
'status' => PolydockStoreAppStatusEnum::AVAILABLE,
'available_for_trials' => true,
'listed_in_marketplace' => true,
'target_unallocated_app_instances' => 0,
'lagoon_post_deploy_script' => '/app/.lagoon/scripts/polydock_post_deploy.sh',
'lagoon_claim_script' => '/app/.lagoon/scripts/polydock_claim.sh',
Expand Down
6 changes: 6 additions & 0 deletions database/seeders/DatabaseSeeder.php
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,7 @@ public function run(): void
'lagoon_deploy_branch' => 'main',
'status' => PolydockStoreAppStatusEnum::AVAILABLE,
'available_for_trials' => true,
'listed_in_marketplace' => true,
'target_unallocated_app_instances' => 0,
]);

Expand All @@ -172,6 +173,7 @@ public function run(): void
'lagoon_deploy_branch' => 'main',
'status' => PolydockStoreAppStatusEnum::AVAILABLE,
'available_for_trials' => true,
'listed_in_marketplace' => true,
'target_unallocated_app_instances' => 0,
]);

Expand All @@ -187,6 +189,7 @@ public function run(): void
'lagoon_deploy_branch' => 'main',
'status' => PolydockStoreAppStatusEnum::AVAILABLE,
'available_for_trials' => true,
'listed_in_marketplace' => true,
'target_unallocated_app_instances' => 1,
'lagoon_post_deploy_script' => '/app/.lagoon/scripts/polydock_post_deploy.sh',
'lagoon_claim_script' => '/app/.lagoon/scripts/polydock_claim.sh',
Expand All @@ -204,6 +207,7 @@ public function run(): void
'lagoon_deploy_branch' => 'main',
'status' => PolydockStoreAppStatusEnum::AVAILABLE,
'available_for_trials' => true,
'listed_in_marketplace' => true,
'target_unallocated_app_instances' => 0,
'lagoon_post_deploy_script' => '/app/.lagoon/scripts/polydock_post_deploy.sh',
'lagoon_claim_script' => '/app/.lagoon/scripts/polydock_claim.sh',
Expand All @@ -221,6 +225,7 @@ public function run(): void
'lagoon_deploy_branch' => 'main',
'status' => PolydockStoreAppStatusEnum::AVAILABLE,
'available_for_trials' => true,
'listed_in_marketplace' => true,
'target_unallocated_app_instances' => 0,
'lagoon_post_deploy_script' => '/app/.lagoon/scripts/polydock_post_deploy.sh',
'lagoon_claim_script' => '/app/.lagoon/scripts/polydock_claim.sh',
Expand All @@ -238,6 +243,7 @@ public function run(): void
'lagoon_deploy_branch' => 'main',
'status' => PolydockStoreAppStatusEnum::AVAILABLE,
'available_for_trials' => true,
'listed_in_marketplace' => true,
'target_unallocated_app_instances' => 0,
'lagoon_post_deploy_script' => '/app/.lagoon/scripts/polydock_post_deploy.sh',
'lagoon_claim_script' => '/app/.lagoon/scripts/polydock_claim.sh',
Expand Down
1 change: 1 addition & 0 deletions database/seeders/LocalstackSeeder.php
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ public function run(): void
'lagoon_deploy_branch' => 'main',
'status' => PolydockStoreAppStatusEnum::AVAILABLE,
'available_for_trials' => true,
'listed_in_marketplace' => true,
'target_unallocated_app_instances' => 0,
]);
}
Expand Down
2 changes: 1 addition & 1 deletion phpstan-baseline.neon
Original file line number Diff line number Diff line change
Expand Up @@ -4215,7 +4215,7 @@ parameters:
-
message: '#^Cannot call method where\(\) on mixed\.$#'
identifier: method.nonObject
count: 1
count: 2
path: app/Http/Controllers/Api/RegionsController.php

-
Expand Down
20 changes: 20 additions & 0 deletions tests/Feature/Api/RegionsApiTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,26 @@ public function test_can_get_public_regions_with_available_apps(): void
$this->assertCount(1, $responseData['data']['regions'][0]['apps']);
}

public function test_apps_not_listed_in_marketplace_are_not_included(): void
{
$publicStore = PolydockStore::factory()->create([
'status' => PolydockStoreStatusEnum::PUBLIC,
'listed_in_marketplace' => true,
]);

PolydockStoreApp::factory()->create([
'polydock_store_id' => $publicStore->id,
'name' => 'Unlisted App',
'status' => PolydockStoreAppStatusEnum::AVAILABLE,
'listed_in_marketplace' => false,
]);

$response = $this->getJson('/api/regions');

$response->assertStatus(200)
->assertJsonCount(0, 'data.regions.0.apps');
}

public function test_private_stores_are_not_included(): void
{
// Create a private store
Expand Down