module CQL::ActiveRecord::Model(Pk)

Overview

The Model module provides Active Record functionality for your models. It combines validations, callbacks, persistence, and relationship handling following SOLID principles.

Example Using the Model module

struct Post < CQL::Model(Int64)
  db_context AcmeDB, :posts

  # Define attributes
  getter id : Int64?
  getter title : String
  getter body : String
  getter published_at : Time

  # Define validations
  validates :title, presence: true, length: {minimum: 3, maximum: 100}
  validates :body, presence: true

  # Define callbacks
  before_save :set_published_at

  # Define relationships
  has_many :comments, Comment, foreign_key: :post_id

  # Constructor
  def initialize(@title : String, @body : String, @published_at : Time = Time.utc)
  end

  # Callback method
  private def set_published_at
    @published_at = Time.utc if @published_at.nil?
  end
end

Defined in:

active_record/model.cr