class User
- User
- Reference
- Object
Included Modules
- Clear::Model
Extended Modules
- Clear::Model::HasHooks::ClassMethods
Defined in:
models/user.crConstant Summary
-
COLUMNS =
{"id" => {type: Int64, primary: true, converter: "Int64", db_column_name: "id", crystal_variable_name: id, presence: false, mass_assign: true}, "provider" => {type: String, primary: false, converter: "String", db_column_name: "provider", crystal_variable_name: provider, presence: true, mass_assign: true}, "provider_id" => {type: Int32, primary: false, converter: "Int32", db_column_name: "provider_id", crystal_variable_name: provider_id, presence: true, mass_assign: true}, "login" => {type: String, primary: false, converter: "String", db_column_name: "login", crystal_variable_name: login, presence: true, mass_assign: true}, "path" => {type: String | ::Nil, primary: false, converter: "String", db_column_name: "path", crystal_variable_name: path, presence: true, mass_assign: true}, "name" => {type: String | ::Nil, primary: false, converter: "String", db_column_name: "name", crystal_variable_name: name, presence: true, mass_assign: true}, "synced_at" => {type: Time, primary: false, converter: "Time", db_column_name: "synced_at", crystal_variable_name: synced_at, presence: true, mass_assign: true}, "created_at" => {type: Time | ::Nil, primary: false, converter: "Time", db_column_name: "created_at", crystal_variable_name: created_at, presence: true, mass_assign: true}, "kind" => {type: String, primary: false, converter: "String", db_column_name: "kind", crystal_variable_name: kind, presence: true, mass_assign: true}, "avatar_url" => {type: String | ::Nil, primary: false, converter: "String", db_column_name: "avatar_url", crystal_variable_name: avatar_url, presence: true, mass_assign: true}, "bio" => {type: String | ::Nil, primary: false, converter: "String", db_column_name: "bio", crystal_variable_name: bio, presence: true, mass_assign: true}, "location" => {type: String | ::Nil, primary: false, converter: "String", db_column_name: "location", crystal_variable_name: location, presence: true, mass_assign: true}, "company" => {type: String | ::Nil, primary: false, converter: "String", db_column_name: "company", crystal_variable_name: company, presence: true, mass_assign: true}, "email" => {type: String | ::Nil, primary: false, converter: "String", db_column_name: "email", crystal_variable_name: email, presence: true, mass_assign: true}, "website" => {type: String | ::Nil, primary: false, converter: "String", db_column_name: "website", crystal_variable_name: website, presence: true, mass_assign: true}, "ignore" => {type: Bool, primary: false, converter: "Bool", db_column_name: "ignore", crystal_variable_name: ignore, presence: true, mass_assign: true}} of Nil => Nil -
POLYMORPHISM_SETTINGS =
{} of Nil => Nil
Constructors
-
.build(x : NamedTuple) : self
Build a new empty model and fill the columns using the NamedTuple in argument.
-
.build(x : NamedTuple, &block : self -> Nil) : self
Build a new empty model and fill the columns using the NamedTuple in argument.
-
.create(x : NamedTuple, &block : self -> Nil) : self
Build and new model and save it.
-
.create(**tuple, &block : self -> Nil) : self
Build and new model and save it.
-
.create(x : NamedTuple) : self
Build and new model and save it.
-
.create(**tuple) : self
Build and new model and save it.
-
.create!(x : NamedTuple, &block : self -> Nil) : self
Build and new model and save it.
-
.create!(**tuple, &block : self -> Nil) : self
Build and new model and save it.
-
.create!(x : NamedTuple) : self
Build and new model and save it.
-
.create!(**tuple) : self
Build and new model and save it.
- .new(h : Hash(String, _), cache : Clear::Model::QueryCache | Nil = nil, persisted = false, fetch_columns = false)
- .new(json : JSON::Any, cache : Clear::Model::QueryCache | Nil = nil, persisted = false)
- .new(t : NamedTuple, persisted = false)
- .new
Class Method Summary
-
.build(**tuple : **T) forall T
Build a new empty model and fill the columns using the NamedTuple in argument.
-
.build(**tuple)
Build a new empty model and fill the columns using the NamedTuple in argument.
-
.build(**tuple, &)
Build a new empty model and fill the columns using the NamedTuple in argument.
- .columns
-
.connection : String
Define on which connection the model is living.
-
.connection=(connection : String)
Define on which connection the model is living.
-
.create_from_json(string_or_io : String | IO, trusted : Bool = false)
Create a new model from json and save it.
-
.create_from_json!(string_or_io : String | IO, trusted : Bool = false)
Create a new model from json and save it.
-
.find(x)
Returns a model using primary key equality Returns
nilif not found. -
.find!(x)
Returns a model using primary key equality.
-
.from_json(string_or_io : String | IO, trusted : Bool = false)
Create a new empty model and fill the columns from json.
-
.full_table_name
returns the fully qualified and escaped name for this table.
-
.import(array : Enumerable(self), on_conflict : Clear::SQL::InsertQuery -> | Nil = nil)
Import a bulk of models in one SQL insert query.
- .polymorphic? : Bool
- .published
-
.query
Return a new empty query
SELECT * FROM [my_model_table]. - .read_only=(read_only : Bool)
- .read_only? : Bool
-
.schema : Clear::SQL::Symbolic | Nil
Define the current schema used in PostgreSQL.
-
.schema=(schema : Clear::SQL::Symbolic | Nil)
Define the current schema used in PostgreSQL.
-
.table : Clear::SQL::Symbolic
Return the table name setup for this model.
-
.table=(table : Clear::SQL::Symbolic)
Return the table name setup for this model.
Instance Method Summary
-
#attributes : Hash(String, Clear::SQL::Any)
Attributes, used when fetch_columns is true
-
#avatar_url : String | Nil
Returns the value of
#avatar_urlcolumn or throw an exception if the column is not defined. -
#avatar_url=(x : String | Nil)
Setter for
#avatar_urlcolumn. -
#avatar_url_column : Clear::Model::Column(String | Nil, Clear::Model::Converter::StringConverter)
Returns the column object used to manage
#avatar_urlfield -
#bio : String | Nil
Returns the value of
#biocolumn or throw an exception if the column is not defined. -
#bio=(x : String | Nil)
Setter for
#biocolumn. -
#bio_column : Clear::Model::Column(String | Nil, Clear::Model::Converter::StringConverter)
Returns the column object used to manage
#biofield - #cache : Clear::Model::QueryCache | Nil
-
#changed?
Return
trueif the model is dirty (e.g. -
#clear_change_flags
Reset the
#changed?flag on all columns -
#company : String | Nil
Returns the value of
#companycolumn or throw an exception if the column is not defined. -
#company=(x : String | Nil)
Setter for
#companycolumn. -
#company_column : Clear::Model::Column(String | Nil, Clear::Model::Converter::StringConverter)
Returns the column object used to manage
#companyfield -
#created_at : Time | Nil
Returns the value of
#created_atcolumn or throw an exception if the column is not defined. -
#created_at=(x : Time | Nil)
Setter for
#created_atcolumn. -
#created_at_column : Clear::Model::Column(Time | Nil, Clear::Model::Converter::TimeConverter)
Returns the column object used to manage
#created_atfield - #decorate
-
#email : String | Nil
Returns the value of
#emailcolumn or throw an exception if the column is not defined. -
#email=(x : String | Nil)
Setter for
#emailcolumn. -
#email_column : Clear::Model::Column(String | Nil, Clear::Model::Converter::StringConverter)
Returns the column object used to manage
#emailfield -
#id : Int64
Returns the value of
#idcolumn or throw an exception if the column is not defined. -
#id=(x : Int64)
Setter for
#idcolumn. -
#id_column : Clear::Model::Column(Int64, Clear::Model::Converter::Int64Converter)
Returns the column object used to manage
#idfield -
#ignore : Bool
Returns the value of
#ignorecolumn or throw an exception if the column is not defined. -
#ignore=(x : Bool)
Setter for
#ignorecolumn. -
#ignore_column : Clear::Model::Column(Bool, Clear::Model::Converter::BoolConverter)
Returns the column object used to manage
#ignorefield -
#invalidate_caching : self
Force to clean-up the caches for the relations connected to this model.
-
#kind : String
Returns the value of
#kindcolumn or throw an exception if the column is not defined. -
#kind=(x : String)
Setter for
#kindcolumn. -
#kind_column : Clear::Model::Column(String, Clear::Model::Converter::StringConverter)
Returns the column object used to manage
#kindfield -
#location : String | Nil
Returns the value of
#locationcolumn or throw an exception if the column is not defined. -
#location=(x : String | Nil)
Setter for
#locationcolumn. -
#location_column : Clear::Model::Column(String | Nil, Clear::Model::Converter::StringConverter)
Returns the column object used to manage
#locationfield -
#login : String
Returns the value of
#logincolumn or throw an exception if the column is not defined. -
#login=(x : String)
Setter for
#logincolumn. -
#login_column : Clear::Model::Column(String, Clear::Model::Converter::StringConverter)
Returns the column object used to manage
#loginfield -
#name : String | Nil
Returns the value of
#namecolumn or throw an exception if the column is not defined. -
#name=(x : String | Nil)
Setter for
#namecolumn. -
#name_column : Clear::Model::Column(String | Nil, Clear::Model::Converter::StringConverter)
Returns the column object used to manage
#namefield -
#path : String | Nil
Returns the value of
#pathcolumn or throw an exception if the column is not defined. -
#path=(x : String | Nil)
Setter for
#pathcolumn. -
#path_column : Clear::Model::Column(String | Nil, Clear::Model::Converter::StringConverter)
Returns the column object used to manage
#pathfield -
#provider : String
Returns the value of
#providercolumn or throw an exception if the column is not defined. -
#provider=(x : String)
Setter for
#providercolumn. -
#provider_column : Clear::Model::Column(String, Clear::Model::Converter::StringConverter)
Returns the column object used to manage
#providerfield -
#provider_id : Int32
Returns the value of
#provider_idcolumn or throw an exception if the column is not defined. -
#provider_id=(x : Int32)
Setter for
#provider_idcolumn. -
#provider_id_column : Clear::Model::Column(Int32, Clear::Model::Converter::Int32Converter)
Returns the column object used to manage
#provider_idfield -
#repositories : Repository::Collection
The method repositories is a
has_manyrelation to Repository -
#reset(h : Hash(Symbol, _))
Set the columns from hash
-
#reset(h : Hash(String, _))
Set the model fields from hash
- #reset(t : NamedTuple)
- #reset(from_json : JSON::Any)
-
#reset(**t : **T) forall T
reset flavors
-
#set(h : Hash(Symbol, _))
Set the columns from hash
-
#set(h : Hash(String, _))
Set the model fields from hash
- #set(t : NamedTuple)
- #set(from_json : JSON::Any)
-
#set(**t : **T) forall T
Set one or multiple columns to a specific value This two are equivalents:
-
#set_from_json(string_or_io : String | IO, trusted : Bool = false)
Set the fields from json passed as argument Trusted flag set to true will allow mass assignment without protection, FALSE by default
-
#synced_at : Time
Returns the value of
#synced_atcolumn or throw an exception if the column is not defined. -
#synced_at=(x : Time)
Setter for
#synced_atcolumn. -
#synced_at_column : Clear::Model::Column(Time, Clear::Model::Converter::TimeConverter)
Returns the column object used to manage
#synced_atfield -
#to_h(full = false) : Hash(String, Clear::SQL::Any)
Return a hash version of the columns of this model.
- #to_json(emit_nulls : Bool = false)
- #to_json(json, emit_nulls = false)
-
#update_from_json(string_or_io : String | IO, trusted : Bool = false)
Set the fields from json passed as argument and call
saveon the object Trusted flag set to true will allow mass assignment without protection, FALSE by default -
#update_from_json!(string_or_io : String | IO, trusted : Bool = false)
Set the fields from json passed as argument and call
save!on the object Trusted flag set to true will allow mass assignment without protection, FALSE by default -
#update_h : Hash(String, Clear::SQL::Any)
Generate the hash for update request (like during save)
-
#validate_fields_presence
For each column, ensure than when needed the column has present information into it.
-
#website : String | Nil
Returns the value of
#websitecolumn or throw an exception if the column is not defined. -
#website=(x : String | Nil)
Setter for
#websitecolumn. -
#website_column : Clear::Model::Column(String | Nil, Clear::Model::Converter::StringConverter)
Returns the column object used to manage
#websitefield
Constructor Detail
Build a new empty model and fill the columns using the NamedTuple in argument.
Returns the new model
Build a new empty model and fill the columns using the NamedTuple in argument.
Returns the new model
Build and new model and save it. Returns the model.
The model may not be saved due to validation failure;
check the returned model errors? and persisted? flags.
Build and new model and save it. Returns the model.
The model may not be saved due to validation failure;
check the returned model errors? and persisted? flags.
Build and new model and save it. Returns the model.
The model may not be saved due to validation failure;
check the returned model errors? and persisted? flags.
Build and new model and save it. Returns the model.
The model may not be saved due to validation failure;
check the returned model errors? and persisted? flags.
Build and new model and save it. Returns the model.
Returns the newly inserted model Raises an exception if validation failed during the saving process.
Build and new model and save it. Returns the model.
Returns the newly inserted model Raises an exception if validation failed during the saving process.
Build and new model and save it. Returns the model.
Returns the newly inserted model Raises an exception if validation failed during the saving process.
Build and new model and save it. Returns the model.
Returns the newly inserted model Raises an exception if validation failed during the saving process.
Class Method Detail
Build a new empty model and fill the columns using the NamedTuple in argument.
Returns the new model
Build a new empty model and fill the columns using the NamedTuple in argument.
Returns the new model
Build a new empty model and fill the columns using the NamedTuple in argument.
Returns the new model
Define on which connection the model is living. Useful in case of models living in different databases.
Is set to "default" by default.
See Clear::SQL#init(URI, *opts) for more information about multi-connections.
Example:
Clear::SQL.init("postgres://postgres@localhost/database_1")
Clear::SQL.init("secondary", "postgres://postgres@localhost/database_2")
class ModelA
include Clear::Model
# Performs all the queries on `database_1`
# self.connection = "default"
column id : Int32, primary: true, presence: false
column title : String
end
class ModelB
include Clear::Model
# Performs all the queries on `database_2`
self.connection = "secondary"
column id : Int32, primary: true, presence: false
end
Define on which connection the model is living. Useful in case of models living in different databases.
Is set to "default" by default.
See Clear::SQL#init(URI, *opts) for more information about multi-connections.
Example:
Clear::SQL.init("postgres://postgres@localhost/database_1")
Clear::SQL.init("secondary", "postgres://postgres@localhost/database_2")
class ModelA
include Clear::Model
# Performs all the queries on `database_1`
# self.connection = "default"
column id : Int32, primary: true, presence: false
column title : String
end
class ModelB
include Clear::Model
# Performs all the queries on `database_2`
self.connection = "secondary"
column id : Int32, primary: true, presence: false
end
Create a new model from json and save it. Returns the model.
The model may not be saved due to validation failure;
check the returned model errors? and persisted? flags.
Trusted flag set to true will allow mass assignment without protection, FALSE by default
Create a new model from json and save it. Returns the model.
Returns the newly inserted model Raises an exception if validation failed during the saving process. Trusted flag set to true will allow mass assignment without protection, FALSE by default
Returns a model using primary key equality. Raises error if the model is not found.
Create a new empty model and fill the columns from json. Returns the new model
Trusted flag set to true will allow mass assignment without protection, FALSE by default
returns the fully qualified and escaped name for this table. add schema if schema is different from 'public' (default schema)
ex: "schema"."table"
Import a bulk of models in one SQL insert query. Each model must be non-persisted.
on_conflict callback can be optionnaly turned on
to manage constraints of the database.
Note: Old models are not modified. This method return a copy of the models as saved in the database.
Example:
users = [User.new(id: 1), User.new(id: 2), User.new(id: 3)]
users = User.import(users)
Return a new empty query SELECT * FROM [my_model_table]. Can be refined after that.
Define the current schema used in PostgreSQL. The value is nil by default, which lead to non-specified
schema during the querying, and usage of "public" by PostgreSQL.
This property can be redefined on initialization. Example:
class MyModel
include Clear::Model
self.schema = "my_schema"
end
MyModel.query.to_sql # SELECT * FROM "my_schema"."my_models"
Define the current schema used in PostgreSQL. The value is nil by default, which lead to non-specified
schema during the querying, and usage of "public" by PostgreSQL.
This property can be redefined on initialization. Example:
class MyModel
include Clear::Model
self.schema = "my_schema"
end
MyModel.query.to_sql # SELECT * FROM "my_schema"."my_models"
Return the table name setup for this model. By convention, the class name is by default equals to the pluralized underscored string form of the model name. Example:
MyModel => "my_models"
Person => "people"
Project::Info => "project_infos"
The property can be updated at initialization to a custom table name:
class MyModel
include Clear::Model
self.table = "another_table_name"
end
MyModel.query.to_sql # SELECT * FROM "another_table_name"
Return the table name setup for this model. By convention, the class name is by default equals to the pluralized underscored string form of the model name. Example:
MyModel => "my_models"
Person => "people"
Project::Info => "project_infos"
The property can be updated at initialization to a custom table name:
class MyModel
include Clear::Model
self.table = "another_table_name"
end
MyModel.query.to_sql # SELECT * FROM "another_table_name"
Instance Method Detail
Returns the value of #avatar_url column or throw an exception if the column is not defined.
Returns the column object used to manage #avatar_url field
See Clear::Model::Column
Returns the value of #bio column or throw an exception if the column is not defined.
Returns the column object used to manage #bio field
See Clear::Model::Column
Return true if the model is dirty (e.g. one or more fields
have been changed.). Return false otherwise.
Reset the #changed? flag on all columns
The model behave like its not dirty anymore and call to save would apply no changes.
Returns self
Returns the value of #company column or throw an exception if the column is not defined.
Returns the column object used to manage #company field
See Clear::Model::Column
Returns the value of #created_at column or throw an exception if the column is not defined.
Returns the column object used to manage #created_at field
See Clear::Model::Column
Returns the value of #email column or throw an exception if the column is not defined.
Returns the column object used to manage #email field
See Clear::Model::Column
Returns the value of #id column or throw an exception if the column is not defined.
Returns the column object used to manage #id field
See Clear::Model::Column
Returns the value of #ignore column or throw an exception if the column is not defined.
Returns the column object used to manage #ignore field
See Clear::Model::Column
Force to clean-up the caches for the relations connected to this model.
Returns the value of #kind column or throw an exception if the column is not defined.
Returns the column object used to manage #kind field
See Clear::Model::Column
Returns the value of #location column or throw an exception if the column is not defined.
Returns the column object used to manage #location field
See Clear::Model::Column
Returns the value of #login column or throw an exception if the column is not defined.
Returns the column object used to manage #login field
See Clear::Model::Column
Returns the value of #name column or throw an exception if the column is not defined.
Returns the column object used to manage #name field
See Clear::Model::Column
Returns the value of #path column or throw an exception if the column is not defined.
Returns the column object used to manage #path field
See Clear::Model::Column
Returns the value of #provider column or throw an exception if the column is not defined.
Returns the column object used to manage #provider field
See Clear::Model::Column
Returns the value of #provider_id column or throw an exception if the column is not defined.
Returns the column object used to manage #provider_id field
See Clear::Model::Column
The method repositories is a has_many relation to Repository
Set one or multiple columns to a specific value This two are equivalents:
model.set(a: 1)
model.a = 1
Set the fields from json passed as argument Trusted flag set to true will allow mass assignment without protection, FALSE by default
Returns the value of #synced_at column or throw an exception if the column is not defined.
Returns the column object used to manage #synced_at field
See Clear::Model::Column
Return a hash version of the columns of this model.
Set the fields from json passed as argument and call save on the object
Trusted flag set to true will allow mass assignment without protection, FALSE by default
Set the fields from json passed as argument and call save! on the object
Trusted flag set to true will allow mass assignment without protection, FALSE by default
Generate the hash for update request (like during save)
For each column, ensure than when needed the column has present information into it.
This method is called on validation.