mirror of
https://gitea.invidious.io/iv-org/shard-crystal-db.git
synced 2024-08-15 00:53:32 +00:00
291b65b853
* Allow DB::Pool to be a generic connection pool * Use fully qualified class name for consistency Co-authored-by: Brian J. Cardiff <bcardiff@gmail.com> * Wrap only the necessary code in an `ensure` * Add spec for http client pool * Fix ICE in crystal-sqlite3 Co-authored-by: Brian J. Cardiff <bcardiff@gmail.com>
48 lines
949 B
Crystal
48 lines
949 B
Crystal
module DB
|
|
abstract class Connection
|
|
end
|
|
|
|
class Error < Exception
|
|
end
|
|
|
|
class MappingException < Error
|
|
end
|
|
|
|
class PoolTimeout < Error
|
|
end
|
|
|
|
class PoolRetryAttemptsExceeded < Error
|
|
end
|
|
|
|
class PoolResourceLost(T) < Error
|
|
getter resource : T
|
|
|
|
def initialize(@resource : T)
|
|
end
|
|
end
|
|
|
|
class PoolResourceRefused < Error
|
|
end
|
|
|
|
# Raised when an established connection is lost
|
|
# probably due to socket/network issues.
|
|
# It is used by the connection pool retry logic.
|
|
class ConnectionLost < PoolResourceLost(Connection)
|
|
def connection
|
|
resource
|
|
end
|
|
end
|
|
|
|
# Raised when a connection is unable to be established
|
|
# probably due to socket/network or configuration issues.
|
|
# It is used by the connection pool retry logic.
|
|
class ConnectionRefused < PoolResourceRefused
|
|
end
|
|
|
|
class Rollback < Error
|
|
end
|
|
|
|
# Raised when a scalar query returns no results.
|
|
class NoResultsError < Error
|
|
end
|
|
end
|