Reference
< Object
A repository for a specific table This class provides a high-level interface for interacting with a table It provides methods for querying, creating, updating, and deleting records It also provides methods for pagination and counting records
Example Creating a new repository
(schema : Schema, table : Symbol)
Initialize the repository with a schema and table name
@param schema [Schema] The schema to use
@param table [Symbol] The name of the table
@return [Repository] The repository object
Example Creating a new repository
Fetch all records of type T
@return [Array(T)] The records
Example Fetching all records
(attrs : Hash(Symbol, DB::Any))
Build a new object of type T with the given attributes
@param attrs [Hash(Symbol, DB::Any)] The attributes to use
@return [T] The new object
Example Building a new user object
Count all records in the table
@return [Int64] The number of records
Example Counting all records
(attrs : Hash(Symbol, DB::Any))
Create a new record with given attributes
@param attrs [Hash(Symbol, DB::Any)] The attributes to use
@return [PrimaryKey] The ID of the new record Example Creating a new record
(id : Pk)
Delete a record by ID
@param id [PrimaryKey] The ID of the record
Example Deleting a record by ID
Delete all records in the table
Example Deleting all records
Delete records matching specific fields
@param fields [Hash(Symbol, DB::Any)] The fields to match
Example Deleting records by email
Check if records exist matching specific fields
@param fields [Hash(Symbol, DB::Any)] The fields to match
@return [Bool] True if records exist, false otherwise
Example Checking if a record exists by email
(id : Pk)
Find a record by ID, return nil if not found
@param id [PrimaryKey] The ID of the record
@return [T?] The record, or nil if not found
Example Fetching a record by ID
(id : Pk)
Find a record by ID, raise an error if not found
@param id [PrimaryKey] The ID of the record
@return [T] The record
Example Fetching a record by ID
Find all records matching specific fields
@param fields [Hash(Symbol, DB::Any)] The fields to match
@return [Array(T)] The records
Example Fetching all active users
Find a record by specific fields
@param fields [Hash(Symbol, DB::Any)] The fields to match
@return [T?] The record, or nil if not found
Example Fetching a record by email
Fetch the first record in the table
@return [T?] The first record, or nil if the table is empty
Example Fetching the first record
Fetch the last record in the table
@return [T?] The last record, or nil if the table is empty
Example Fetching the last record
(page_number, per_page = 10)
Paginate results based on page number and items per page
@param page_number [Int32] The page number to fetch
@param per_page [Int32] The number of items per page
@return [Array(T)] The records for the page
Example Paginating results
(per_page)
Limit the number of results per page
@param per_page [Int32] The number of items per page
@return [Array(T)] The records for the page
Example Limiting results per page
(id : Pk, attrs : Hash(Symbol, DB::Any))
Update a record by ID with given attributes
@param id [PrimaryKey] The ID of the record
@param attrs [Hash(Symbol, DB::Any)] The attributes to update
Example Updating a record by ID
(id : Pk, **fields)
Update a record by ID with given fields
@param id [PrimaryKey] The ID of the record
@param fields [Hash(Symbol, DB::Any)] The fields to update
Example Updating a record by ID
(attrs : Hash(Symbol, DB::Any))
Update all records with given attributes
@param attrs [Hash(Symbol, DB::Any)] The attributes to update
Example Updating all records
(where_attrs : Hash(Symbol, DB::Any), update_attrs : Hash(Symbol, DB::Any))
Update records matching where attributes with update attributes
@param where_attrs [Hash(Symbol, DB::Any)] The attributes to match
@param update_attrs [Hash(Symbol, DB::Any)] The attributes to update
Example Updating records by email