Skip to content

Commit 03ded25

Browse files
Allow publishing migrations separately (#249)
* Separate migration publish groups * DRY on migrations * Change update scripts to handle when tables dont exist * Remove trailing comma * Add to readme --------- Co-authored-by: Ryan Mitchell <[email protected]>
1 parent 662bb12 commit 03ded25

File tree

5 files changed

+67
-5
lines changed

5 files changed

+67
-5
lines changed

README.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,27 @@ If you're planning to use existing content, we can use the existing UUIDs. This
3737
- Run `php artisan vendor:publish --tag="statamic-eloquent-entries-table-with-string-ids"`.
3838
- Run `php artisan migrate`.
3939

40+
### Publishing migrations seperately
41+
42+
Alternatively, you can publish each repository's migrations individually:
43+
44+
`php artisan vendor:publish --tag="statamic-eloquent-asset-migrations"`
45+
46+
`php artisan vendor:publish --tag="statamic-eloquent-blueprint-migrations"`
47+
48+
`php artisan vendor:publish --tag="statamic-eloquent-collection-migrations"`
49+
50+
`php artisan vendor:publish --tag="statamic-eloquent-form-migrations"`
51+
52+
`php artisan vendor:publish --tag="statamic-eloquent-global-migrations"`
53+
54+
`php artisan vendor:publish --tag="statamic-eloquent-navigation-migrations"`
55+
56+
`php artisan vendor:publish --tag="statamic-eloquent-revision-migrations"`
57+
58+
`php artisan vendor:publish --tag="statamic-eloquent-taxonomy-migrations"`
59+
60+
4061
## Configuration
4162

4263
The configuration file (`statamic.eloquent-driver`) allows you to choose which repositories you want to be driven by eloquent. By default, all are selected, but if you want to opt out simply change `driver` from `eloquent` to `file` for that repository.

src/ServiceProvider.php

Lines changed: 37 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,22 +75,57 @@ public function boot()
7575

7676
$this->publishes([$config => config_path('statamic/eloquent-driver.php')], 'statamic-eloquent-config');
7777

78-
$this->publishes([
78+
$this->publishes($taxonomyMigrations = [
7979
__DIR__.'/../database/migrations/create_taxonomies_table.php.stub' => $this->migrationsPath('create_taxonomies_table.php'),
8080
__DIR__.'/../database/migrations/create_terms_table.php.stub' => $this->migrationsPath('create_terms_table.php'),
81+
], 'statamic-eloquent-taxonomy-migrations');
82+
83+
$this->publishes($globalMigrations = [
8184
__DIR__.'/../database/migrations/create_globals_table.php.stub' => $this->migrationsPath('create_globals_table.php'),
8285
__DIR__.'/../database/migrations/create_global_variables_table.php.stub' => $this->migrationsPath('create_global_variables_table.php'),
86+
], 'statamic-eloquent-global-migrations');
87+
88+
$this->publishes($navigationMigrations = [
8389
__DIR__.'/../database/migrations/create_navigations_table.php.stub' => $this->migrationsPath('create_navigations_table.php'),
8490
__DIR__.'/../database/migrations/create_navigation_trees_table.php.stub' => $this->migrationsPath('create_navigation_trees_table.php'),
91+
], 'statamic-eloquent-navigation-migrations');
92+
93+
$this->publishes($collectionMigrations = [
8594
__DIR__.'/../database/migrations/create_collections_table.php.stub' => $this->migrationsPath('create_collections_table.php'),
95+
], 'statamic-eloquent-collection-migrations');
96+
97+
$this->publishes($blueprintMigrations = [
8698
__DIR__.'/../database/migrations/create_blueprints_table.php.stub' => $this->migrationsPath('create_blueprints_table.php'),
8799
__DIR__.'/../database/migrations/create_fieldsets_table.php.stub' => $this->migrationsPath('create_fieldsets_table.php'),
100+
], 'statamic-eloquent-blueprint-migrations');
101+
102+
$this->publishes($formMigrations = [
88103
__DIR__.'/../database/migrations/create_forms_table.php.stub' => $this->migrationsPath('create_forms_table.php'),
89104
__DIR__.'/../database/migrations/create_form_submissions_table.php.stub' => $this->migrationsPath('create_form_submissions_table.php'),
105+
], 'statamic-eloquent-form-migrations');
106+
107+
$this->publishes($assetMigrations = [
90108
__DIR__.'/../database/migrations/create_asset_containers_table.php.stub' => $this->migrationsPath('create_asset_containers_table.php'),
91109
__DIR__.'/../database/migrations/create_asset_table.php.stub' => $this->migrationsPath('create_asset_table.php'),
110+
], 'statamic-eloquent-asset-migrations');
111+
112+
$this->publishes($revisionMigrations = [
92113
__DIR__.'/../database/migrations/create_revisions_table.php.stub' => $this->migrationsPath('create_revisions_table.php'),
93-
], 'migrations');
114+
], 'statamic-eloquent-revision-migrations');
115+
116+
$this->publishes(
117+
array_merge(
118+
$taxonomyMigrations,
119+
$globalMigrations,
120+
$navigationMigrations,
121+
$collectionMigrations,
122+
$blueprintMigrations,
123+
$formMigrations,
124+
$assetMigrations,
125+
$revisionMigrations
126+
),
127+
'migrations'
128+
);
94129

95130
$this->publishes([
96131
__DIR__.'/../database/migrations/create_entries_table.php.stub' => $this->migrationsPath('create_entries_table'),

src/Updates/AddBlueprintToEntriesTable.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@ class AddBlueprintToEntriesTable extends UpdateScript
99
{
1010
public function shouldUpdate($newVersion, $oldVersion)
1111
{
12-
return ! Schema::hasColumn(config('statamic.eloquent-driver.table_prefix', '').'entries', 'blueprint');
12+
$entriesTable = config('statamic.eloquent-driver.table_prefix', '').'entries';
13+
14+
return Schema::hasTable($entriesTable) && ! Schema::hasColumn($entriesTable, 'blueprint');
1315
}
1416

1517
public function update()

src/Updates/AddMetaAndIndexesToAssetsTable.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@ class AddMetaAndIndexesToAssetsTable extends UpdateScript
99
{
1010
public function shouldUpdate($newVersion, $oldVersion)
1111
{
12-
return ! Schema::hasColumn(config('statamic.eloquent-driver.table_prefix', '').'assets_meta', 'meta');
12+
$assetsTable = config('statamic.eloquent-driver.table_prefix', '').'assets_meta';
13+
14+
return Schema::hasTable($assetsTable) && ! Schema::hasColumn($assetsTable, 'meta');
1315
}
1416

1517
public function update()

src/Updates/SplitGlobalsFromVariables.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@ class SplitGlobalsFromVariables extends UpdateScript
99
{
1010
public function shouldUpdate($newVersion, $oldVersion)
1111
{
12-
return ! Schema::hasColumn(config('statamic.eloquent-driver.table_prefix', '').'global_sets', 'settings');
12+
$globalsTable = config('statamic.eloquent-driver.table_prefix', '').'global_sets';
13+
14+
return Schema::hasTable($globalsTable) && ! Schema::hasColumn($globalsTable, 'settings');
1315
}
1416

1517
public function update()

0 commit comments

Comments
 (0)