Skip to content

Commit

Permalink
PostgreSQLとSQLiteの対応 fix #2086
Browse files Browse the repository at this point in the history
  • Loading branch information
ryuring committed Mar 28, 2023
1 parent dc6193f commit cfadbca
Show file tree
Hide file tree
Showing 17 changed files with 492 additions and 14 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,9 @@ node_modules
!/composer/.gitkeep
# vendor
!/vendor/.gitkeep
# db
/db/*
!/db/.gitkeep
# etc
LOCAL_TODO.md
LOCAL_Q&A.md
Empty file added db/.gitkeep
Empty file.
2 changes: 1 addition & 1 deletion docker/docker-compose.yml.default
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ services:
- ./phpmyadmin/sessions:/sessions

bc5-pg:
image: postgres:10.5
image: postgres:15.2
container_name: bc5-pg
ports:
- 5432:5432
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
<?php
declare(strict_types=1);

use BaserCore\Database\Migration\BcMigration;
use Phinx\Db\Adapter\PostgresAdapter;

class AlterIdToBaserCoreAll extends BcMigration
{
/**
* Change Method.
*
* More information on this method is available here:
* https://book.cakephp.org/phinx/0/en/migrations.html#the-change-method
* @return void
*/
public function change()
{
$this->table('pages')
->changeColumn('id', 'integer', [
'identity' => true,
'generated' => PostgresAdapter::GENERATED_BY_DEFAULT
])
->update();
$this->table('password_requests')
->changeColumn('id', 'integer', [
'identity' => true,
'generated' => PostgresAdapter::GENERATED_BY_DEFAULT
])
->update();
$this->table('content_folders')
->changeColumn('id', 'integer', [
'identity' => true,
'generated' => PostgresAdapter::GENERATED_BY_DEFAULT
])
->update();
$this->table('plugins')
->changeColumn('id', 'integer', [
'identity' => true,
'generated' => PostgresAdapter::GENERATED_BY_DEFAULT
])
->update();
$this->table('user_groups')
->changeColumn('id', 'integer', [
'identity' => true,
'generated' => PostgresAdapter::GENERATED_BY_DEFAULT
])
->update();
$this->table('users')
->changeColumn('id', 'integer', [
'identity' => true,
'generated' => PostgresAdapter::GENERATED_BY_DEFAULT
])
->update();
$this->table('users_user_groups')
->changeColumn('id', 'integer', [
'identity' => true,
'generated' => PostgresAdapter::GENERATED_BY_DEFAULT
])
->update();
$this->table('login_stores')
->changeColumn('id', 'integer', [
'identity' => true,
'generated' => PostgresAdapter::GENERATED_BY_DEFAULT
])
->update();
$this->table('site_configs')
->changeColumn('id', 'integer', [
'identity' => true,
'generated' => PostgresAdapter::GENERATED_BY_DEFAULT
])
->update();
$this->table('dblogs')
->changeColumn('id', 'integer', [
'identity' => true,
'generated' => PostgresAdapter::GENERATED_BY_DEFAULT
])
->update();
$this->table('permissions')
->changeColumn('id', 'integer', [
'identity' => true,
'generated' => PostgresAdapter::GENERATED_BY_DEFAULT
])
->update();
$this->table('sites')
->changeColumn('id', 'integer', [
'identity' => true,
'generated' => PostgresAdapter::GENERATED_BY_DEFAULT
])
->update();
$this->table('contents')
->changeColumn('id', 'integer', [
'identity' => true,
'generated' => PostgresAdapter::GENERATED_BY_DEFAULT
])
->update();
$this->table('permission_groups')
->changeColumn('id', 'integer', [
'identity' => true,
'generated' => PostgresAdapter::GENERATED_BY_DEFAULT
])
->update();
}

}
12 changes: 7 additions & 5 deletions plugins/baser-core/src/Service/BcDatabaseService.php
Original file line number Diff line number Diff line change
Expand Up @@ -1261,7 +1261,7 @@ public function deleteTables($dbConfigKeyName = 'default', $dbConfig = null)
$sql = "SELECT sequence_name FROM INFORMATION_SCHEMA.sequences WHERE sequence_schema = '{$dbConfig['schema']}';";
$sequences = [];
try {
$sequences = $db->query($sql);
$sequences = $db->execute($sql)->fetchAll('assoc');
} catch (BcException $e) {
}
if ($sequences) {
Expand All @@ -1278,7 +1278,9 @@ public function deleteTables($dbConfigKeyName = 'default', $dbConfig = null)
break;

case 'sqlite':
@unlink($dbConfig['database']);
if(file_exists($dbConfig['database'])) {
unlink($dbConfig['database']);
}
break;
}
return true;
Expand Down Expand Up @@ -1427,11 +1429,11 @@ public function constructionTable(string $plugin, string $dbConfigKeyName = 'def
$db = $this->getDataSource($dbConfigKeyName, $dbConfig);
if (!$dbConfig) $dbConfig = ConnectionManager::getConfig($dbConfigKeyName);
$datasource = strtolower(str_replace('Cake\\Database\\Driver\\', '', $dbConfig['driver']));
if (!$db->isConnected()) {
return false;
} elseif ($datasource == 'sqlite') {
if ($datasource == 'sqlite') {
$db->connect();
chmod($dbConfig['database'], 0666);
} elseif (!$db->isConnected()) {
return false;
}
return $this->migrate($plugin, $dbConfigKeyName);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
<?php
declare(strict_types=1);

use BaserCore\Database\Migration\BcMigration;
use Phinx\Db\Adapter\PostgresAdapter;

class AlterIdToBcBlogAll extends BcMigration
{
/**
* Change Method.
*
* More information on this method is available here:
* https://book.cakephp.org/phinx/0/en/migrations.html#the-change-method
* @return void
*/
public function change()
{
$this->table('blog_contents')
->changeColumn('id', 'integer', [
'identity' => true,
'generated' => PostgresAdapter::GENERATED_BY_DEFAULT
])
->update();
$this->table('blog_categories')
->changeColumn('id', 'integer', [
'identity' => true,
'generated' => PostgresAdapter::GENERATED_BY_DEFAULT
])
->update();
$this->table('blog_posts')
->changeColumn('id', 'integer', [
'identity' => true,
'generated' => PostgresAdapter::GENERATED_BY_DEFAULT
])
->update();
$this->table('blog_comments')
->changeColumn('id', 'integer', [
'identity' => true,
'generated' => PostgresAdapter::GENERATED_BY_DEFAULT
])
->update();
$this->table('blog_posts_blog_tags')
->changeColumn('id', 'integer', [
'identity' => true,
'generated' => PostgresAdapter::GENERATED_BY_DEFAULT
])
->update();
$this->table('blog_tags')
->changeColumn('id', 'integer', [
'identity' => true,
'generated' => PostgresAdapter::GENERATED_BY_DEFAULT
])
->update();
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<?php
declare(strict_types=1);

use BaserCore\Database\Migration\BcMigration;
use Phinx\Db\Adapter\PostgresAdapter;

class AlterIdToBcContentLinkAll extends BcMigration
{
/**
* Change Method.
*
* More information on this method is available here:
* https://book.cakephp.org/phinx/0/en/migrations.html#the-change-method
* @return void
*/
public function change()
{
$this->table('content_links')
->changeColumn('id', 'integer', [
'identity' => true,
'generated' => PostgresAdapter::GENERATED_BY_DEFAULT
])
->update();
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
<?php
declare(strict_types=1);

use BaserCore\Database\Migration\BcMigration;
use Phinx\Db\Adapter\PostgresAdapter;

class AlterIdToBcCustomContentAll extends BcMigration
{
/**
* Change Method.
*
* More information on this method is available here:
* https://book.cakephp.org/phinx/0/en/migrations.html#the-change-method
* @return void
*/
public function change()
{
$this->table('custom_contents')
->changeColumn('id', 'integer', [
'identity' => true,
'generated' => PostgresAdapter::GENERATED_BY_DEFAULT
])
->update();
$this->table('custom_tables')
->changeColumn('id', 'integer', [
'identity' => true,
'generated' => PostgresAdapter::GENERATED_BY_DEFAULT
])
->update();
$this->table('custom_entry_1_recruit')
->changeColumn('id', 'integer', [
'identity' => true,
'generated' => PostgresAdapter::GENERATED_BY_DEFAULT
])
->update();
$this->table('custom_entry_2_occupations')
->changeColumn('id', 'integer', [
'identity' => true,
'generated' => PostgresAdapter::GENERATED_BY_DEFAULT
])
->update();
$this->table('custom_links')
->changeColumn('id', 'integer', [
'identity' => true,
'generated' => PostgresAdapter::GENERATED_BY_DEFAULT
])
->update();
$this->table('custom_fields')
->changeColumn('id', 'integer', [
'identity' => true,
'generated' => PostgresAdapter::GENERATED_BY_DEFAULT
])
->update();
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<?php
declare(strict_types=1);

use BaserCore\Database\Migration\BcMigration;
use Phinx\Db\Adapter\PostgresAdapter;

class AlterIdToBcEditorTemplateAll extends BcMigration
{
/**
* Change Method.
*
* More information on this method is available here:
* https://book.cakephp.org/phinx/0/en/migrations.html#the-change-method
* @return void
*/
public function change()
{
$this->table('editor_teplates')
->changeColumn('id', 'integer', [
'identity' => true,
'generated' => PostgresAdapter::GENERATED_BY_DEFAULT
])
->update();
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<?php
declare(strict_types=1);

use BaserCore\Database\Migration\BcMigration;
use Phinx\Db\Adapter\PostgresAdapter;

class AlterIdToBcFavoriteAll extends BcMigration
{
/**
* Change Method.
*
* More information on this method is available here:
* https://book.cakephp.org/phinx/0/en/migrations.html#the-change-method
* @return void
*/
public function change()
{
$this->table('favorites')
->changeColumn('id', 'integer', [
'identity' => true,
'generated' => PostgresAdapter::GENERATED_BY_DEFAULT
])
->update();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
use Cake\Core\Configure;
use Cake\Event\EventInterface;
use Cake\Http\Cookie\Cookie;
use Cake\Http\Response;
use Cake\ORM\Exception\PersistenceFailedException;
use Cake\Utility\Hash;
use BaserCore\Annotation\UnitTest;
Expand Down Expand Up @@ -85,7 +86,7 @@ public function step2(InstallationsAdminServiceInterface $service)
/**
* Step 3: データベースの接続設定
*
* @return void
* @return void|Response
* @noTodo
* @checked
*/
Expand Down Expand Up @@ -122,7 +123,7 @@ public function step3(InstallationsAdminServiceInterface $service)
);
$this->BcMessage->setInfo(__d('baser_core', 'データベースの構築に成功しました。'));
return $this->redirect(['action' => 'step4']);
} catch (BcException $e) {
} catch (\Throwable $e) {
$errorMessage = __d('baser_core', 'データベースの構築中にエラーが発生しました。') . "\n" . $e->getMessage();
$this->BcMessage->setError($errorMessage);
}
Expand Down
Loading

0 comments on commit cfadbca

Please sign in to comment.