Вход Регистрация
Файл: vendor/laravel/framework/src/Illuminate/Database/Schema/PostgresSchemaState.php
Строк: 98
<?php

namespace IlluminateDatabaseSchema;

use 
IlluminateDatabaseConnection;

class 
PostgresSchemaState extends SchemaState
{
    
/**
     * Dump the database's schema into a file.
     *
     * @param  IlluminateDatabaseConnection  $connection
     * @param  string  $path
     * @return void
     */
    
public function dump(Connection $connection$path)
    {
        
$commands collect([
            
$this->baseDumpCommand().' --schema-only > '.$path,
        ]);

        if (
$this->hasMigrationTable()) {
            
$commands->push($this->baseDumpCommand().' -t '.$this->migrationTable.' --data-only >> '.$path);
        }

        
$commands->map(function ($command$path) {
            
$this->makeProcess($command)->mustRun($this->outputarray_merge($this->baseVariables($this->connection->getConfig()), [
                
'LARAVEL_LOAD_PATH' => $path,
            ]));
        });
    }

    
/**
     * Load the given schema file into the database.
     *
     * @param  string  $path
     * @return void
     */
    
public function load($path)
    {
        
$command 'pg_restore --no-owner --no-acl --clean --if-exists --host="${:LARAVEL_LOAD_HOST}" --port="${:LARAVEL_LOAD_PORT}" --username="${:LARAVEL_LOAD_USER}" --dbname="${:LARAVEL_LOAD_DATABASE}" "${:LARAVEL_LOAD_PATH}"';

        if (
str_ends_with($path'.sql')) {
            
$command 'psql --file="${:LARAVEL_LOAD_PATH}" --host="${:LARAVEL_LOAD_HOST}" --port="${:LARAVEL_LOAD_PORT}" --username="${:LARAVEL_LOAD_USER}" --dbname="${:LARAVEL_LOAD_DATABASE}"';
        }

        
$process $this->makeProcess($command);

        
$process->mustRun(nullarray_merge($this->baseVariables($this->connection->getConfig()), [
            
'LARAVEL_LOAD_PATH' => $path,
        ]));
    }

    
/**
     * Get the base dump command arguments for PostgreSQL as a string.
     *
     * @return string
     */
    
protected function baseDumpCommand()
    {
        return 
'pg_dump --no-owner --no-acl --host="${:LARAVEL_LOAD_HOST}" --port="${:LARAVEL_LOAD_PORT}" --username="${:LARAVEL_LOAD_USER}" --dbname="${:LARAVEL_LOAD_DATABASE}"';
    }

    
/**
     * Get the base variables for a dump / load command.
     *
     * @param  array  $config
     * @return array
     */
    
protected function baseVariables(array $config)
    {
        
$config['host'] ??= '';

        return [
            
'LARAVEL_LOAD_HOST' => is_array($config['host']) ? $config['host'][0] : $config['host'],
            
'LARAVEL_LOAD_PORT' => $config['port'] ?? '',
            
'LARAVEL_LOAD_USER' => $config['username'],
            
'PGPASSWORD' => $config['password'],
            
'LARAVEL_LOAD_DATABASE' => $config['database'],
        ];
    }
}
Онлайн: 0
Реклама