Esempio n. 1
0
 /**
  * Creates the table.
  *
  * @param string $name the table name
  */
 private function createTable($name)
 {
     $table = new Table($name);
     $table->addField(new Field('id', new Type(Field::TYPE_VARCHAR, 32), '', false, false));
     $table->addField(new Field('username', new Type(Field::TYPE_VARCHAR, 255), null, true, false));
     $table->addField(new Field('fullName', Field::TYPE_TEXT, null, true, false));
     $table->addField(new Field('email', new Type(Field::TYPE_VARCHAR, 255), null, true, false));
     $table->addField(new Field('birthdate', Field::TYPE_DATE, null, true, false));
     $table->addField(new Field('gender', new Type(Field::TYPE_VARCHAR, 255), '', true, false));
     $table->addField(new Field('timezoneOffset', new Type(Field::TYPE_SMALLINT, 4), 0, false, false));
     $table->addField(new Field('locale', new Type(Field::TYPE_VARCHAR, 10), 'en-US', false, false));
     $table->addField(new Field('lastLogin', new Type(Field::TYPE_INT, 12), -1, false, false));
     $table->addField(new Field('secret', Field::TYPE_TEXT, '', false, false));
     $table->setPrimaryKey(new PrimaryKey($name, array('id')));
     $table->addIndex(new Index('username', $name, true, array('username')));
     $table->addIndex(new Index('email', $name, true, array('email')));
     $this->db->createTable($table);
 }
Esempio n. 2
0
 /**
  * Creates the table.
  */
 private function createTable()
 {
     $table = new Table($this->table);
     $table->addField(new Field('role', new Type(Field::TYPE_VARCHAR, 255), '', false, false));
     $table->addField(new Field('page', new Type(Field::TYPE_VARCHAR, 255), '', false, false));
     $table->addField(new Field('task', new Type(Field::TYPE_VARCHAR, 255), '', false, false));
     $table->setPrimaryKey(new PrimaryKey($this->table, array('role', 'page', 'task')));
     $this->db->createTable($table);
 }
Esempio n. 3
0
 /**
  * Returns the table skeleton.
  *
  * This is the basic table with ID, GID and parent fields.
  *
  * @return Table the table skeleton
  */
 protected function getTableSkeleton()
 {
     $table = new Table($this->tableName, '');
     $table->addField(new Field('id', new Type(Field::TYPE_INT, 20), '', false, true, 'The local ID'));
     $table->addField(new Field('gid', new Type(Field::TYPE_VARCHAR, 32), '-1', false, false, 'The global ID (GID)'));
     $table->addField(new Field('parent', new Type(Field::TYPE_VARCHAR, 32), '-1', false, false, 'The parent GID'));
     $table->setPrimaryKey(new PrimaryKey($this->tableName, array('id')));
     $table->addIndex(new Index('gid', $this->tableName, true, array('gid')));
     $table->addIndex(new Index('parent', $this->tableName, false, array('parent')));
     return $table;
 }
Esempio n. 4
0
 public function setUpTable(Table $table)
 {
     $table->addField(new Field('name', new Type(Field::TYPE_VARCHAR, 255)));
     $table->addField(new Field('length', Field::TYPE_INT));
     return $table;
 }
Esempio n. 5
0
 /**
  * Creates the table.
  *
  * @param string $name the table name
  */
 private function createTable($name)
 {
     $table = new Table($name);
     $table->addField(new Field('idx', Field::TYPE_INT, '', false, true));
     $table->addField(new Field('id', new Type(Field::TYPE_VARCHAR, 32), '', false, false));
     $table->addField(new Field('role', Field::TYPE_TEXT, '', false, false));
     $table->setPrimaryKey(new PrimaryKey($name, array('idx')));
     $this->db->createTable($table);
 }
Esempio n. 6
0
 /**
  * Creates the table.
  *
  * @param string $name the table name
  */
 private function createTable()
 {
     $name = $this->table;
     $table = new Table($name, '');
     $table->addField(new Field('idx', new Type(Field::TYPE_VARCHAR, 255), '', false, false));
     $table->addField(new Field('data', new Type(Field::TYPE_BLOB), '', false, false));
     if ($this->useTimestamps) {
         $table->addField(new Field('ts', new Type(Field::TYPE_INT, 10), '', false, false));
     }
     $table->setPrimaryKey(new PrimaryKey($name, array('idx')));
     $this->db->createTable($table);
 }
Esempio n. 7
0
 public function createTable(Table $table)
 {
     $createDefinition = array();
     $fields = $table->getFields();
     if (empty($fields)) {
         throw new SQLException('A table must have at least one field');
     }
     foreach ($fields as $field) {
         $createDefinition[] = $this->buildColumnDefinition($field);
     }
     $primary = $table->getPrimaryKey();
     if ($primary != null) {
         $createDefinition[] = $this->buildPrimaryKeyDefinition($primary);
     }
     $indices = $table->getIndices();
     foreach ($indices as $index) {
         $createDefinition[] = $this->buildIndexDefinition($index);
     }
     $foreignKeys = $table->getForeignKeys();
     foreach ($foreignKeys as $foreignKey) {
         $createDefinition[] = $this->buildForeignKeyDefinition($foreignKey);
     }
     $query = 'CREATE TABLE ' . $this->addPrefix($table->getName()) . "(\n";
     $query .= implode(",\n", $createDefinition) . "\n)";
     $query .= " ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci";
     $comment = $table->getComment();
     if (strlen($comment) > 0) {
         $query .= ' COMMENT=' . $this->pdoDriver->escapeString($comment);
     }
     $query .= ';';
     $this->pdoDriver->executeQuery($query, null, false);
 }
Esempio n. 8
0
 /**
  * Tests getting the last insert ID.
  *
  * @depends testCreateTable
  * @covers empire\framework\db\DB::lastInsertID
  *
  * @param DB[] $dbs the database objects to work on
  */
 public function testLastInsertID($dbs)
 {
     foreach ($dbs as $db) {
         /* @var $db DB */
         $table = new Table('tlastinsert');
         $table->addField(new Field('flastinsert', Field::TYPE_INT, '', false, true));
         $table->addField(new Field('ftest', new Type(Field::TYPE_VARCHAR, 10)));
         $table->setPrimaryKey(new PrimaryKey('flastinsert', array('flastinsert')));
         if ($db->tableExists($table->getName())) {
             $db->dropTable($table->getName());
         }
         $db->createTable($table);
         $bindings = array(':::table' => 'tlastinsert', ':value' => 'hello');
         for ($i = 1; $i <= 100; $i++) {
             $db->execute('INSERT INTO :::table (ftest) VALUES(:value)', $bindings);
             $this->assertSame($i, $db->lastInsertID());
         }
         $db->dropTable($table->getName());
     }
 }