SQLite3SchemaManager
class SQLite3SchemaManager extends DBSchemaManager (View source)
SQLite schema manager class
Properties
| protected | SQLite3Database | $database | Instance of the database controller this schema belongs to  | 
                |
| protected | bool | $supressOutput | If this is false, then information about database operations will be displayed, eg creation of tables.  | 
                from DBSchemaManager | 
| protected static | array<string,string> | $table_name_warnings | from DBSchemaManager | |
| protected | array | $tableList | The table list, generated by the tableList() function.  | 
                from DBSchemaManager | 
| protected | bool | $schemaIsUpdating | Keeps track whether we are currently updating the schema.  | 
                from DBSchemaManager | 
| protected | array | $schemaUpdateTransaction | Large array structure that represents a schema update transaction  | 
                from DBSchemaManager | 
| protected static | bool | $checked_and_repaired | Flag indicating whether or not the database has been checked and repaired  | 
                |
| public static | bool | $vacuum | Should schema be vacuumed during checkeAndRepairTable?  | 
                |
| protected | array | $enum_map | Cached list of enum values indexed by table.column  | 
                
Methods
No description
Execute the given SQL query.
Execute the given SQL parameterised query with the specified arguments
Cancels the schema updates requested during (but not after) schemaUpdate() call.
Returns true if schema modifications were requested during (but not after) schemaUpdate() call.
Instruct the schema manager to record a table creation to later execute
Instruct the schema manager to record a table alteration to later execute
Instruct the schema manager to record a field to be later created
Instruct the schema manager to record an index to be later created
Instruct the schema manager to record a field to be later updated
Instruct the schema manager to record an index to be later updated
Handler for the other transXXX methods - mark the given table as being altered if it doesn't already exist
Generate the following table in the database, modifying whatever already exists as necessary.
If the given table exists, move it out of the way by renaming it to obsolete(tablename).
Generate the given index in the database, modifying whatever already exists as necessary.
Splits a spec string safely, considering quoted columns, whitespace, and cleaning brackets
Builds a properly quoted column list from an array
Given an index specification in the form of a string ensure that each column name is property quoted, stripping brackets and modifiers.
Given an index spec determines the index type
This takes the index spec which has been provided by a class (ie static $indexes = blah blah) and turns it into a proper string.
Returns true if the given table is exists in the current database
Return true if the table exists and already has a the field specified
Generate the given field on the table, modifying whatever already exists as necessary.
If the given field exists, move it out of the way by renaming it to obsolete(fieldname).
Show a message about database alteration
This returns the data type for the id column which is the primary key for each table
Checks a table's integrity and repairs it if necessary.
Ensure the given table has the correct case
Return enum values for the given field
Alter an index on a table.
Determines the key that should be used to identify this index when retrieved from DBSchemaManager->indexList.
Create a new table.
Alter a table's schema.
Change the database column name of the given field.
This allows the cached values for a table's field list to be erased.
Return a set type-formatted string This type doesn't exist in SQLite either
Return a datetime type-formatted string For SQLite3, we simply return the word 'TEXT', no other parameters are necessary
Change the database type of the given field.
Create an index on a table.
Builds the internal SQLLite index name given the silverstripe table and index name.
Details
        
                static            
    showTableNameWarning(string $table, string $class)
        
    
    No description
        
                            
    setDatabase(Database $database)
        
    
    Injector injection point for database controller
        
                            
    quiet(bool $quiet = true)
        
    
    Enable suppression of database messages.
        
                            Query
    query(string $sql, int $errorLevel = E_USER_ERROR)
        
    
    Execute the given SQL query.
This abstract function must be defined by subclasses as part of the actual implementation. It should return a subclass of SS_Query as the result.
        
                            Query
    preparedQuery(string $sql, array $parameters, int $errorLevel = E_USER_ERROR)
        
    
    Execute the given SQL parameterised query with the specified arguments
        
                            
    schemaUpdate(callable $callback)
        
    
    Initiates a schema update within a single callback
        
                            
    cancelSchemaUpdate()
        
    
    Cancels the schema updates requested during (but not after) schemaUpdate() call.
        
                            bool
    isSchemaUpdating()
        
    
    Returns true if we are during a schema update.
        
                            bool
    doesSchemaNeedUpdating()
        
    
    Returns true if schema modifications were requested during (but not after) schemaUpdate() call.
        
                            
    transCreateTable(string $table, array $options = null, array $advanced_options = null)
        
    
    Instruct the schema manager to record a table creation to later execute
        
                            
    transAlterTable(string $table, array $options, array $advanced_options)
        
    
    Instruct the schema manager to record a table alteration to later execute
        
                            
    transCreateField(string $table, string $field, string $schema)
        
    
    Instruct the schema manager to record a field to be later created
        
                            
    transCreateIndex(string $table, string $index, array $schema)
        
    
    Instruct the schema manager to record an index to be later created
        
                            
    transAlterField(string $table, string $field, string $schema)
        
    
    Instruct the schema manager to record a field to be later updated
        
                            
    transAlterIndex(string $table, string $index, array $schema)
        
    
    Instruct the schema manager to record an index to be later updated
        
                    protected        
    transInitTable(string $table)
        
    
    Handler for the other transXXX methods - mark the given table as being altered if it doesn't already exist
        
                            
    requireTable(string $table, array $fieldSchema = null, array $indexSchema = null, bool $hasAutoIncPK = true, array $options = [], array|bool $extensions = false)
        
    
    Generate the following table in the database, modifying whatever already exists as necessary.
        
                            
    dontRequireTable(string $table)
        
    
    If the given table exists, move it out of the way by renaming it to obsolete(tablename).
        
                            
    requireIndex(string $table, string $index, string|array|bool $spec)
        
    
    Generate the given index in the database, modifying whatever already exists as necessary.
The keys of the array are the names of the index. The values of the array can be one of:
- true: Create a single column index on the field named the same as the index.
 - ['type' => 'index|unique|fulltext', 'value' => 'FieldA, FieldB']: This gives you full control over the index.
 
        
                    protected        array
    explodeColumnString(string $spec)
        
    
    Splits a spec string safely, considering quoted columns, whitespace, and cleaning brackets
        
                    protected        string
    implodeColumnList(array $columns)
        
    
    Builds a properly quoted column list from an array
        
                    protected        string
    quoteColumnSpecString(string $spec)
        
    
    Given an index specification in the form of a string ensure that each column name is property quoted, stripping brackets and modifiers.
This index may also be in the form of a "CREATE INDEX..." sql fragment
        
                    protected        string
    determineIndexType(array|string $spec)
        
    
    Given an index spec determines the index type
        
                    protected        string
    convertIndexSpec(string|array $indexSpec)
        
    
    This takes the index spec which has been provided by a class (ie static $indexes = blah blah) and turns it into a proper string.
Some indexes may be arrays, such as fulltext and unique indexes, and this allows database-specific arrays to be created. See requireTable() for details on the index format.
        
                            bool
    hasTable(string $tableName)
        
    
    Returns true if the given table is exists in the current database
        
                            bool
    hasField(string $tableName, string $fieldName)
        
    
    Return true if the table exists and already has a the field specified
        
                            
    requireField(string $table, string $field, array|string $spec)
        
    
    Generate the given field on the table, modifying whatever already exists as necessary.
        
                            
    dontRequireField(string $table, string $fieldName)
        
    
    If the given field exists, move it out of the way by renaming it to obsolete(fieldname).
        
                            
    alterationMessage(string $message, string $type = "")
        
    
    Show a message about database alteration
        
                            string
    IdColumn(bool $asDbValue = false, bool $hasAutoIncPK = true)
        
    
    This returns the data type for the id column which is the primary key for each table
        
                            bool
    checkAndRepairTable(string $tableName = null)
        
    
    Checks a table's integrity and repairs it if necessary.
        
                            
    fixTableCase(string $tableName)
        
    
    Ensure the given table has the correct case
        
                            array
    enumValuesForField(string $tableName, string $fieldName)
        
    
    Return enum values for the given field
        
                            
    dbDataType($type)
        
    
    No description
        
                            array
    databaseList()
        
    
    Retrieves the list of all databases the user has access to
        
                            bool
    databaseExists(string $name)
        
    
    Determine if the database with the specified name exists
        
                            bool
    createDatabase(string $name)
        
    
    Create a database with the specified name
        
                            
    dropDatabase(string $name)
        
    
    Drops a database with the specified name
        
                            
    alterIndex(string $tableName, string $indexName, array $indexSpec)
        
    
    Alter an index on a table.
        
                            string
    indexKey(string $table, string $index, array $spec)
        
    
    Determines the key that should be used to identify this index when retrieved from DBSchemaManager->indexList.
In some connectors this is the database-visible name, in others the usercode-visible name.
        
                            array[]
    indexList(string $table)
        
    
    Return the list of indexes in a table.
        
                            array
    tableList()
        
    
    Returns a list of all tables in the database.
Keys are table names in lower case, values are table names in case that database expects.
        
                            string
    createTable(string $table, array $fields = null, array $indexes = null, array $options = null, array $advancedOptions = null)
        
    
    Create a new table.
        
                            
    alterTable($tableName, array $newFields = null, array $newIndexes = null, array $alteredFields = null, array $alteredIndexes = null, array $alteredOptions = null, array $advancedOptions = null)
        
    
    Alter a table's schema.
        
                            
    renameTable(string $oldTableName, string $newTableName)
        
    
    Rename a table.
        
                            
    createField(string $table, string $field, string $spec)
        
    
    Create a new field on a table.
        
                            
    renameField(string $tableName, string $oldName, string $newName)
        
    
    Change the database column name of the given field.
        
                            array
    fieldList(string $table)
        
    
    Get a list of all the fields for the given table.
Returns a map of field name => field spec.
        
                            bool
    clearCachedFieldlist(string $tableName = null)
        
    
    This allows the cached values for a table's field list to be erased.
If $tablename is empty, then the whole cache is erased.
        
                            string
    boolean(array $values)
        
    
    Return a boolean type-formatted string
        
                            string
    date(array $values)
        
    
    Return a date type-formatted string
        
                            string
    decimal(array $values)
        
    
    Return a decimal type-formatted string
        
                            string
    enum(array $values)
        
    
    Return a enum type-formatted string
enums are not supported. as a workaround to store allowed values we creates an additional table
        
                            string
    set(array $values)
        
    
    Return a set type-formatted string This type doesn't exist in SQLite either
        
                            string
    float(array $values)
        
    
    Return a float type-formatted string
        
                            string
    int(array $values)
        
    
    Return a int type-formatted string
        
                            string
    datetime(array $values)
        
    
    Return a datetime type-formatted string For SQLite3, we simply return the word 'TEXT', no other parameters are necessary
        
                            string
    text(array $values)
        
    
    Return a text type-formatted string
        
                            string
    time(array $values)
        
    
    Return a time type-formatted string
        
                            string
    varchar(array $values)
        
    
    Return a varchar type-formatted string
        
                            
    year($values, $asDbValue = false)
        
    
    No description
        
                            
    flushCache()
        
    
    Empties any cached enum values
        
                            
    clearTable(string $table)
        
    
    Empty a specific table
        
                            
    alterField(string $tableName, string $fieldName, string $fieldSpec)
        
    
    Change the database type of the given field.
        
                            
    createIndex(string $tableName, string $indexName, array $indexSpec)
        
    
    Create an index on a table.
        
                    protected        string
    buildSQLiteIndexName(string $tableName, string $indexName)
        
    
    Builds the internal SQLLite index name given the silverstripe table and index name.
The name is built using the table and index name in order to prevent name collisions between indexes of the same name across multiple tables
        
                            string
    double(array $values)
        
    
    Return a Double type-formatted string
        
                            string
    bigint(array $values)
        
    
    Return a bigint type-formatted string