name: DoctrineDbalStore class_comment: "# * DbalStore is a PersistingStoreInterface implementation using a\ \ Doctrine DBAL connection.\n# *\n# * Lock metadata are stored in a table. You can\ \ use createTable() to initialize\n# * a correctly defined table.\n# *\n# * CAUTION:\ \ This store relies on all client and server nodes to have\n# * synchronized clocks\ \ for lock expiry to occur at the correct time.\n# * To ensure locks don't expire\ \ prematurely; the TTLs should be set with enough\n# * extra time to account for\ \ any clock drift between nodes.\n# *\n# * @author J\xE9r\xE9my Deruss\xE9 " dependencies: - name: Configuration type: class source: Doctrine\DBAL\Configuration - name: Connection type: class source: Doctrine\DBAL\Connection - name: DriverManager type: class source: Doctrine\DBAL\DriverManager - name: DBALException type: class source: Doctrine\DBAL\Exception - name: TableNotFoundException type: class source: Doctrine\DBAL\Exception\TableNotFoundException - name: ParameterType type: class source: Doctrine\DBAL\ParameterType - name: DefaultSchemaManagerFactory type: class source: Doctrine\DBAL\Schema\DefaultSchemaManagerFactory - name: Schema type: class source: Doctrine\DBAL\Schema\Schema - name: DsnParser type: class source: Doctrine\DBAL\Tools\DsnParser - name: InvalidArgumentException type: class source: Symfony\Component\Lock\Exception\InvalidArgumentException - name: InvalidTtlException type: class source: Symfony\Component\Lock\Exception\InvalidTtlException - name: LockConflictedException type: class source: Symfony\Component\Lock\Exception\LockConflictedException - name: Key type: class source: Symfony\Component\Lock\Key - name: PersistingStoreInterface type: class source: Symfony\Component\Lock\PersistingStoreInterface - name: DatabaseTableTrait type: class source: DatabaseTableTrait - name: ExpiringStoreTrait type: class source: ExpiringStoreTrait properties: [] methods: - name: __construct visibility: public parameters: - name: connOrUrl - name: options default: '[]' - name: gcProbability default: '0.01' - name: initialTtl default: '300' comment: "# * DbalStore is a PersistingStoreInterface implementation using a Doctrine\ \ DBAL connection.\n# *\n# * Lock metadata are stored in a table. You can use\ \ createTable() to initialize\n# * a correctly defined table.\n# *\n# * CAUTION:\ \ This store relies on all client and server nodes to have\n# * synchronized clocks\ \ for lock expiry to occur at the correct time.\n# * To ensure locks don't expire\ \ prematurely; the TTLs should be set with enough\n# * extra time to account for\ \ any clock drift between nodes.\n# *\n# * @author J\xE9r\xE9my Deruss\xE9 \n\ # */\n# class DoctrineDbalStore implements PersistingStoreInterface\n# {\n# use\ \ DatabaseTableTrait;\n# use ExpiringStoreTrait;\n# \n# private Connection $conn;\n\ # \n# /**\n# * List of available options:\n# * * db_table: The name of the table\ \ [default: lock_keys]\n# * * db_id_col: The column where to store the lock key\ \ [default: key_id]\n# * * db_token_col: The column where to store the lock token\ \ [default: key_token]\n# * * db_expiration_col: The column where to store the\ \ expiration [default: key_expiration].\n# *\n# * @param Connection|string $connOrUrl\ \ A DBAL Connection instance or Doctrine URL\n# * @param array \ \ $options An associative array of options\n# * @param float \ \ $gcProbability Probability expressed as floating number between 0 and 1 to\ \ clean old locks\n# * @param int $initialTtl The expiration\ \ delay of locks in seconds\n# *\n# * @throws InvalidArgumentException When namespace\ \ contains invalid characters\n# * @throws InvalidArgumentException When the initial\ \ ttl is not valid" - name: save visibility: public parameters: - name: key comment: null - name: putOffExpiration visibility: public parameters: - name: key - name: ttl comment: null - name: delete visibility: public parameters: - name: key comment: null - name: exists visibility: public parameters: - name: key comment: null - name: createTable visibility: public parameters: [] comment: '# * Creates the table to store lock keys which can be called once for setup. # * # * @throws DBALException When the table already exists' - name: configureSchema visibility: public parameters: - name: schema - name: isSameDatabase comment: '# * Adds the Table to the Schema if it doesn''t exist.' - name: prune visibility: private parameters: [] comment: '# * Cleans up the table by removing all expired locks.' - name: getCurrentTimestampStatement visibility: private parameters: [] comment: '# * Provides an SQL function to get the current timestamp regarding the current connection''s driver.' - name: platformSupportsTableCreationInTransaction visibility: private parameters: [] comment: '# * Checks whether current platform supports table creation within transaction.' traits: - Doctrine\DBAL\Configuration - Doctrine\DBAL\Connection - Doctrine\DBAL\DriverManager - Doctrine\DBAL\Exception\TableNotFoundException - Doctrine\DBAL\ParameterType - Doctrine\DBAL\Schema\DefaultSchemaManagerFactory - Doctrine\DBAL\Schema\Schema - Doctrine\DBAL\Tools\DsnParser - Symfony\Component\Lock\Exception\InvalidArgumentException - Symfony\Component\Lock\Exception\InvalidTtlException - Symfony\Component\Lock\Exception\LockConflictedException - Symfony\Component\Lock\Key - Symfony\Component\Lock\PersistingStoreInterface - DatabaseTableTrait - ExpiringStoreTrait interfaces: - PersistingStoreInterface