DbDatasource

Database based data source

 class Winter\Storm\Halcyon\Datasource\DbDatasource
extends Winter\Storm\Halcyon\Datasource\Datasource
implements 
    Winter\Storm\Halcyon\Datasource\DatasourceInterface

Table Structure:

  • id, unsigned integer
  • source, varchar
  • path, varchar
  • content, longText
  • file_size, unsigned integer // In bytes - NOTE: max file size of 4.29 GB represented with unsigned int in MySQL
  • updated_at, datetime
  • deleted_at, datetime, nullable

Traits

Trait Description
Emitter

Adds event related features to any class.

Properties

protected $source : string

The identifier for this datasource instance

protected $table : string

The table name of the datasource

protected $emitterEventCollection : array

Inherited from Emitter

Collection of registered events.

protected $emitterEventSorted : array

Inherited from Emitter

Sorted collection of events.

protected $emitterSingleEventCollection : array

Inherited from Emitter

Collection of registered events to be fired once only.

protected $forceDeleting : bool

Inherited from Datasource

Indicates if the record is currently being force deleted.

protected $postProcessor : Winter\Storm\Halcyon\Processors\Processor

Inherited from Datasource

The query post processor implementation.

Methods

public __construct (string $source, string $table)

Create a new database datasource instance.

Parameters
Property Description
$source
string

The source identifier for this datasource instance

$table
string

The table for this database datasource

Returns
mixed

public delete (string $dirName, string $fileName, string $extension) : bool

Runs a delete statement against the datasource.

Parameters
Property Description
$dirName
string

The directory in which the model is stored.

$fileName
string

The filename of the model.

$extension
string

The file extension of the model.

Returns
bool

If the delete operation completed successfully.

public getAvailablePaths () : array

Get all available paths within this datasource.

This method returns an array, with all available paths as the key, and a boolean that represents whether the path can be handled or modified.

Example:

[
    'path/to/file.md' => true, // (this path is available, and can be handled)
    'path/to/file2.md' => false // (this path is available, but cannot be handled)
]
Returns
array

An array of available paths alongside whether they can be handled.

public getBaseQuery () : Winter\Storm\Database\QueryBuilder

Get the base QueryBuilder object.

Returns
Winter\Storm\Database\QueryBuilder

public getPathsCacheKey () : string

Gets the prefix of the cache keys.

This is based off a prefix including the base path for the model.

Returns
string

The cache key prefix.

public getQuery (boolean $ignoreDeleted = true) : Winter\Storm\Database\QueryBuilder

Get the QueryBuilder object.

Parameters
Property Description
$ignoreDeleted
boolean

Ignore deleted records. Defaults to true.

Returns
Winter\Storm\Database\QueryBuilder

public insert (string $dirName, string $fileName, string $extension, string $content) : integer

Creates a new Halcyon model (template).

Parameters
Property Description
$dirName
string

The directory in which the model is stored.

$fileName
string

The filename of the model.

$extension
string

The file extension of the model.

$content
string

The content to store for the model.

Returns
integer

The filesize of the created model.

public lastModified (string $dirName, string $fileName, string $extension) : integer | null

Returns the last modified date of a model (template).

Parameters
Property Description
$dirName
string

The directory in which the model is stored.

$fileName
string

The filename of the model.

$extension
string

The file extension of the model.

Returns
integer | null

The last modified time as a timestamp, or null if the object doesn't exist.

public select (string $dirName, array $options = []) : array

Returns all Halcyon models (templates) within a given directory.

You can provide multiple options with the $options property, in order to filter the retrieved records:

  • columns: Only retrieve certain columns. Must be an array with any combination of fileName, mtime and content.
  • extensions: Defines the accepted extensions as an array. Eg: ['htm', 'md', 'twig']
  • fileMatch: Defines a glob string to match filenames against. Eg: '*gr[ae]y'
  • orders: Not implemented
  • limit: Not implemented
  • offset: Not implemented
Parameters
Property Description
$dirName
string

The directory in which the model is stored.

$options
array

Defines the options for this query.

Returns
array

An array of models found, with the columns defined as per the columns parameter for $options.

public selectOne (string $dirName, string $fileName, string $extension) : array | null

Returns a single Halcyon model (template).

Parameters
Property Description
$dirName
string

The directory in which the model is stored.

$fileName
string

The filename of the model.

$extension
string

The file extension of the model.

Returns
array | null

An array of template data (fileName, mtime and content), or null if the model does not exist.

public update (string $dirName, string $fileName, string $extension, string $content, $oldFileName = null, $oldExtension = null) : integer

Updates an existing Halcyon model (template).

Parameters
Property Description
$dirName
string

The directory in which the model is stored.

$fileName
string

The filename of the model.

$extension
string

The file extension of the model.

$content
string

The content to store for the model.

$oldFileName
mixed

Used for renaming templates. If specified, this will delete the "old" path.

$oldExtension
mixed

Used for renaming templates. If specified, this will delete the "old" path.

Returns
integer

The filesize of the updated model.

protected makeFilePath (string $dirName, string $fileName, string $extension) : string

Helper method to combine the provided directory, filename and extension into a single path.

Parameters
Property Description
$dirName
string

The directory in which the model is stored.

$fileName
string

The filename of the model.

$extension
string

The file extension of the model.

Returns
string

The combined path.

public bindEvent (string | Closure | QueuedClosure $event, mixed $callback = null, integer $priority) : self

Inherited from Emitter

Create a new event binding.

Parameters
Property Description
$event
string | Closure | QueuedClosure
$callback
mixed

when the third parameter is omitted and a Closure or QueuedClosure is provided this parameter is used as an integer this is used as priority variable

$priority
integer
Returns
self

public bindEventOnce (string | Closure | QueuedClosure $event, QueuedClosure | Closure | null $callback = null) : self

Inherited from Emitter

Create a new event binding that fires once only

Parameters
Property Description
$event
string | Closure | QueuedClosure
$callback
QueuedClosure | Closure | null

When a Closure or QueuedClosure is provided as the first parameter this parameter can be omitted

Returns
self

public fireEvent (string $event, array $params = [], boolean $halt = false) : array | mixed | null

Inherited from Emitter

Fire an event and call the listeners.

Parameters
Property Description
$event
string

Event name

$params
array

Event parameters

$halt
boolean

Halt after first non-null result

Returns
array | mixed | null

If halted, the first non-null result. If not halted, an array of event results. Returns null if no listeners returned a result.

public forceDelete (string $dirName, string $fileName, string $extension) : bool

Inherited from Datasource
Parameters
Property Description
$dirName
string
$fileName
string
$extension
string
Returns
bool

public getPostProcessor () : Winter\Storm\Halcyon\Processors\Processor

Inherited from Datasource
Returns
Winter\Storm\Halcyon\Processors\Processor

public makeCacheKey (string $name = "") : string

Inherited from Datasource
Parameters
Property Description
$name
string
Returns
string

public unbindEvent (string | array | object $event = null) : self

Inherited from Emitter

Destroys an event binding.

Parameters
Property Description
$event
string | array | object

Event to destroy

Returns
self

protected emitterEventSortEvents (string $eventName) : void

Inherited from Emitter

Sort the listeners for a given event by priority.

Parameters
Property Description
$eventName
string
Returns
void

protected parseEventAndPayload (mixed $event, mixed $payload = null) : array

Inherited from Emitter

Parse the given event and payload and prepare them for dispatching.

Parameters
Property Description
$event
mixed
$payload
mixed
Returns
array
Copyright © 2024 Winter CMS