/**
  * @return ColumnFragment[]
  */
 public function getColumnList()
 {
     $columnList = [];
     foreach ($this->schema->getPropertyList() as $property) {
         $columnList[$property->getName()] = new ColumnFragment($property);
     }
     return array_merge($this->columnList, $columnList);
 }
 /**
  * truncate given schema (clear all data, even if it has relations)
  *
  * @param ISchema $schema
  */
 public function truncate(ISchema $schema)
 {
     $this->connected();
     $result = $this->pdo->prepare("SELECT 1 FROM sqlite_master WHERE type='table' AND name=?;");
     $result->execute([$schema->getName()]);
     if ($result->fetch() !== false) {
         $this->pdo->exec('DELETE FROM ' . $this->delimite($schema->getName()));
     }
 }
Exemple #3
0
 /**
  * @return ISchema
  */
 public function schema()
 {
     if ($this->schema === null) {
         $this->schema = new Schema(static::class);
         $this->schema->addSchemaProperty(new SchemaProperty('file'));
         $this->schema->addSchemaProperty((new SchemaProperty('extension'))->setRequired(false));
         $this->schema->addSchemaProperty(new SchemaProperty('mime'));
         $this->schema->addSchemaProperty((new SchemaProperty('size'))->setType('int'));
         $this->schema->addSchemaProperty((new SchemaProperty('changed'))->setType('datetime'));
         $this->schema->addSchemaProperty((new SchemaProperty('stamp'))->setType('datetime'));
     }
     return $this->schema;
 }
 /**
  * create the table from the given schema; this method needs to be optimized
  *
  * @param ISchema $schema
  *
  * @return $this
  */
 public function createSchema(ISchema $schema)
 {
     if ($this->cache->load($cacheId = 'schema.' . $schema->getName()) === true) {
         return $this;
     }
     $createTableQuery = new CreateTableQuery($schema);
     $createTableQuery->setIfNotExists();
     $createTableQuery->addColumn(new ColumnFragment($this->createPrimaryProperty()));
     $this->exec($createTableQuery);
     $this->cache->save($cacheId, true);
     return $this;
 }