23 lines
461 B
Crystal
23 lines
461 B
Crystal
require "sqlite3"
|
|
require "crecto"
|
|
|
|
require "./user.cr"
|
|
|
|
module App::Models
|
|
class Link < Crecto::Model
|
|
schema :links do
|
|
field :id, String, primary_key: true
|
|
field :slug, String
|
|
field :url, String
|
|
|
|
belongs_to :user, User
|
|
has_many :clicks, Click
|
|
end
|
|
|
|
unique_constraint :slug
|
|
|
|
validate_required [:slug, :url]
|
|
validate_format :url, /\A(?:(https?:\/\/)?(?:[\w-]+\.)+[a-z]{2,})(?::\d+)?(?:[\/?#]\S*)?\z/i
|
|
end
|
|
end
|