Esempio n. 1
0
 public function sql()
 {
     $functions = "CREATE TABLE `function` (`id`\tINTEGER PRIMARY KEY AUTOINCREMENT, `name` TEXT UNIQUE, `type` TEXT, `description` TEXT";
     $params = "CREATE TABLE `parameter` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `parameter` TEXT NOT NULL, `type` TEXT NOT NULL, `initializer`\tTEXT, `functionId` INTEGER NOT NULL";
     $schema = new \Doctrine\DBAL\Schema\Schema();
     $functions = $schema->createTable('function');
     $functions->addColumn('id', 'integer', array('autoincrement' => true));
     $functions->addColumn('name', 'text');
     $functions->addColumn('type', 'text');
     $functions->addColumn('description', 'text');
     $functions->setPrimaryKey(array('id'));
     $functions->addUniqueIndex(array('name'));
     $schema->createSequence('function_seq');
     $parameter = $schema->createTable('parameter');
     $parameter->addColumn('id', 'integer', array('autoincrement' => true));
     $parameter->addColumn('parameter', 'text');
     $parameter->addColumn('type', 'text');
     $parameter->addColumn('initializer', 'text');
     $parameter->setPrimaryKey(array('id'));
     $schema->createSequence('parameter_seq');
     $sql = $schema->toSql(new \Doctrine\DBAL\Platforms\SqlitePlatform());
     var_dump($sql);
     die;
 }
Esempio n. 2
0
File: DBAL.php Progetto: cti/storage
 public function convert(\Cti\Storage\Schema $inputSchema)
 {
     $schema = new \Doctrine\DBAL\Schema\Schema();
     foreach ($inputSchema->getModels() as $model) {
         $table = $schema->createTable($model->getName());
         foreach ($model->getProperties() as $property) {
             $params = array('comment' => $property->getComment(), 'notnull' => $property->getRequired());
             $type = $property->getType();
             if ($type === 'char') {
                 $type = 'string';
                 $params['length'] = 1;
             }
             $table->addColumn($property->getName(), $type, $params);
         }
         $table->setPrimaryKey($model->getPk());
         foreach ($model->getIndexes() as $index) {
             $table->addIndex($index->getFields());
         }
     }
     foreach ($inputSchema->getModels() as $model) {
         $table = $schema->getTable($model->getName());
         foreach ($model->getOutReferences() as $reference) {
             if ($inputSchema->getModel($reference->getDestination())->getBehaviour("log")) {
                 continue;
             }
             $destination = $schema->getTable($reference->getDestination());
             $foreignProperties = array();
             foreach ($reference->getProperties() as $property) {
                 $foreignProperties[] = $property->getForeignName();
             }
             $localProperties = array_keys($reference->getProperties());
             $table->addForeignKeyConstraint($destination, $localProperties, $foreignProperties);
         }
     }
     foreach ($inputSchema->getSequences() as $sequence) {
         $schema->createSequence($sequence->getName());
     }
     return $schema;
 }
Esempio n. 3
0
 protected function createRoutes(Application $app)
 {
     $app->get('/reinstall', function () use($app) {
         /** @var \Doctrine\DBAL\Connection $conn */
         $conn = $app['db'];
         /** @var \Doctrine\DBAL\Schema\AbstractSchemaManager $sm */
         $sm = $conn->getSchemaManager();
         $schema = new \Doctrine\DBAL\Schema\Schema();
         $table = $schema->createTable('users');
         $table->addColumn("id", "integer", ["unsigned" => true]);
         $table->addColumn("username", "string", ["length" => 32]);
         $table->addColumn("age", "integer", ["unsigned" => true]);
         $table->setPrimaryKey(["id"]);
         $table->addUniqueIndex(["username"]);
         $schema->createSequence("users_seq");
         $sm->dropAndCreateTable($table);
         $table = $schema->createTable('messages');
         $table->addColumn("id", "integer", ["unsigned" => true]);
         $table->addColumn("author", "string", ["length" => 32]);
         $table->addColumn("parent", "integer", ["unsigned" => true]);
         $table->addColumn("message", "string", ["length" => 256]);
         $table->setPrimaryKey(["id"]);
         $sm->dropAndCreateTable($table);
         return 'DB installed';
     });
 }