Overview

Namespaces

  • Inlm
    • SchemaGenerator
      • Adapters
      • Diffs
      • Dumpers
      • Extractors
      • Loggers
      • Utils

Classes

  • Inlm\SchemaGenerator\Adapters\MemoryAdapter
  • Inlm\SchemaGenerator\Adapters\NeonAdapter
  • Inlm\SchemaGenerator\Configuration
  • Inlm\SchemaGenerator\ConfigurationFactory
  • Inlm\SchemaGenerator\ConfigurationSerializer
  • Inlm\SchemaGenerator\DataType
  • Inlm\SchemaGenerator\DiffGenerator
  • Inlm\SchemaGenerator\Diffs\AddedTableOption
  • Inlm\SchemaGenerator\Diffs\CreatedForeignKey
  • Inlm\SchemaGenerator\Diffs\CreatedTable
  • Inlm\SchemaGenerator\Diffs\CreatedTableColumn
  • Inlm\SchemaGenerator\Diffs\CreatedTableIndex
  • Inlm\SchemaGenerator\Diffs\RemovedForeignKey
  • Inlm\SchemaGenerator\Diffs\RemovedTable
  • Inlm\SchemaGenerator\Diffs\RemovedTableColumn
  • Inlm\SchemaGenerator\Diffs\RemovedTableIndex
  • Inlm\SchemaGenerator\Diffs\RemovedTableOption
  • Inlm\SchemaGenerator\Diffs\UpdatedForeignKey
  • Inlm\SchemaGenerator\Diffs\UpdatedTable
  • Inlm\SchemaGenerator\Diffs\UpdatedTableColumn
  • Inlm\SchemaGenerator\Diffs\UpdatedTableComment
  • Inlm\SchemaGenerator\Diffs\UpdatedTableIndex
  • Inlm\SchemaGenerator\Diffs\UpdatedTableOption
  • Inlm\SchemaGenerator\Dumpers\AbstractSqlDumper
  • Inlm\SchemaGenerator\Dumpers\DibiDumper
  • Inlm\SchemaGenerator\Dumpers\NullDumper
  • Inlm\SchemaGenerator\Dumpers\SqlDumper
  • Inlm\SchemaGenerator\Extractors\DibiMysqlExtractor
  • Inlm\SchemaGenerator\Extractors\LeanMapperExtractor
  • Inlm\SchemaGenerator\Extractors\NeonExtractor
  • Inlm\SchemaGenerator\Loggers\MemoryLogger
  • Inlm\SchemaGenerator\Loggers\OutputLogger
  • Inlm\SchemaGenerator\SchemaGenerator
  • Inlm\SchemaGenerator\Utils\DataTypeParser
  • Inlm\SchemaGenerator\Utils\Generator

Interfaces

  • Inlm\SchemaGenerator\IAdapter
  • Inlm\SchemaGenerator\IDumper
  • Inlm\SchemaGenerator\IExtractor
  • Inlm\SchemaGenerator\ILogger

Exceptions

  • Inlm\SchemaGenerator\DuplicatedException
  • Inlm\SchemaGenerator\EmptyException
  • Inlm\SchemaGenerator\Exception
  • Inlm\SchemaGenerator\FileSystemException
  • Inlm\SchemaGenerator\InvalidArgumentException
  • Inlm\SchemaGenerator\MissingArgumentException
  • Inlm\SchemaGenerator\MissingException
  • Inlm\SchemaGenerator\StaticClassException
  • Inlm\SchemaGenerator\UnsupportedException
  • Overview
  • Namespace
  • Class
 1:  2:  3:  4:  5:  6:  7:  8:  9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 
<?php

    namespace Inlm\SchemaGenerator\Dumpers;

    use CzProject\SqlGenerator;
    use CzProject\SqlSchema;
    use Inlm\SchemaGenerator\Diffs;
    use Inlm\SchemaGenerator\IDumper;


    class SqlDumper extends AbstractSqlDumper
    {
        const FLAT = 0;
        const YEAR = 1;
        const YEAR_MONTH = 2;

        /** @var string */
        private $directory;

        /** @var SqlGenerator\IDriver */
        private $driver;

        /** @var int */
        private $outputStructure = self::FLAT;


        /**
         * @param  string
         */
        public function __construct($directory, SqlGenerator\IDriver $driver)
        {
            $this->directory = $directory;
            $this->driver = $driver;
        }


        /**
         * @param  int
         * @return self
         */
        public function setOutputStructure($outputStructure)
        {
            $this->outputStructure = $outputStructure;
            return $this;
        }


        /**
         * @return self
         * @deprecated
         */
        public function setDeepStructure()
        {
            $this->outputStructure = self::YEAR_MONTH;
            return $this;
        }


        /**
         * @return void
         */
        public function end()
        {
            if (!$this->sqlDocument->isEmpty()) {
                $directory = $this->directory;

                if ($this->outputStructure === self::YEAR_MONTH) {
                    $directory .= '/' . date('Y/m');

                } elseif ($this->outputStructure === self::YEAR) {
                    $directory .= '/' . date('Y');

                } elseif ($this->outputStructure !== self::FLAT) {
                    throw new \Inlm\SchemaGenerator\InvalidArgumentException("Invalid output structure '{$this->outputStructure}'.");
                }

                $path = $directory . '/' . date('Y-m-d-His') . '.sql';

                if (file_exists($path)) {
                    throw new \Inlm\SchemaGenerator\FileSystemException("File '$path' already exists.");
                }

                @mkdir($directory, 0777, TRUE);
                file_put_contents($path, $this->sqlDocument->toSql($this->driver));
            }
            $this->sqlDocument = NULL;
        }
    }
inlm/schema-generator v0.5.0 API documentation API documentation generated by ApiGen