class StoreOrderForm

Defined in:

operations/store_order_form.cr

Constant Summary

ATTRIBUTES = [] of Nil
COLUMN_ATTRIBUTES = [{name: id, type: Int32, nilable: false, autogenerated: true, value: nil, serialized: false}, {name: created_at, type: Time, nilable: false, autogenerated: true, value: nil, serialized: false}, {name: updated_at, type: Time, nilable: false, autogenerated: true, value: nil, serialized: false}, {name: store_id, type: Store::PrimaryKeyType, nilable: false, autogenerated: false, value: nil, serialized: false}, {name: user_id, type: User::PrimaryKeyType, nilable: false, autogenerated: false, value: nil, serialized: false}, {name: planned_delivery_date, type: Time, nilable: true, autogenerated: false, value: nil, serialized: false}, {name: delivered_at, type: Time, nilable: true, autogenerated: false, value: nil, serialized: false}, {name: total_cost, type: Float64, nilable: false, autogenerated: false, value: nil, serialized: false}, {name: total_weight, type: Float64, nilable: false, autogenerated: false, value: nil, serialized: false}, {name: id, type: Int32, nilable: false, autogenerated: true, value: nil, serialized: false}, {name: created_at, type: Time, nilable: false, autogenerated: true, value: nil, serialized: false}, {name: updated_at, type: Time, nilable: false, autogenerated: true, value: nil, serialized: false}, {name: store_id, type: Store::PrimaryKeyType, nilable: false, autogenerated: false, value: nil, serialized: false}, {name: user_id, type: User::PrimaryKeyType, nilable: false, autogenerated: false, value: nil, serialized: false}, {name: planned_delivery_date, type: Time, nilable: true, autogenerated: false, value: nil, serialized: false}, {name: delivered_at, type: Time, nilable: true, autogenerated: false, value: nil, serialized: false}, {name: total_cost, type: Float64, nilable: false, autogenerated: false, value: nil, serialized: false}, {name: total_weight, type: Float64, nilable: false, autogenerated: false, value: nil, serialized: false}] of Nil
FOREIGN_KEY = "store_order_id"
OPERATION_NEEDS = [] of Nil

Constructors

Class Method Summary

Instance Method Summary

Macro Summary

Instance methods inherited from class StoreOrder::SaveOperation

attributes attributes, created_at created_at, created_at=(_value) created_at=, delivered_at delivered_at, delivered_at=(_value) delivered_at=, id id, id=(_value) id=, permitted_params permitted_params, planned_delivery_date planned_delivery_date, planned_delivery_date=(_value) planned_delivery_date=, required_attributes required_attributes, set_attributes(id : Int32 | Avram::Nothing = Avram::Nothing.new, created_at : Time | Avram::Nothing = Avram::Nothing.new, updated_at : Time | Avram::Nothing = Avram::Nothing.new, store_id : Store::PrimaryKeyType | Avram::Nothing = Avram::Nothing.new, user_id : User::PrimaryKeyType | Avram::Nothing = Avram::Nothing.new, planned_delivery_date : Time | Avram::Nothing | Nil = Avram::Nothing.new, delivered_at : Time | Avram::Nothing | Nil = Avram::Nothing.new, total_cost : Float64 | Avram::Nothing = Avram::Nothing.new, total_weight : Float64 | Avram::Nothing = Avram::Nothing.new) set_attributes, set_created_at_from_param(_value) set_created_at_from_param, set_delivered_at_from_param(_value) set_delivered_at_from_param, set_id_from_param(_value) set_id_from_param, set_planned_delivery_date_from_param(_value) set_planned_delivery_date_from_param, set_store_id_from_param(_value) set_store_id_from_param, set_total_cost_from_param(_value) set_total_cost_from_param, set_total_weight_from_param(_value) set_total_weight_from_param, set_updated_at_from_param(_value) set_updated_at_from_param, set_user_id_from_param(_value) set_user_id_from_param, store_id store_id, store_id=(_value) store_id=, total_cost total_cost, total_cost=(_value) total_cost=, total_weight total_weight, total_weight=(_value) total_weight=, updated_at updated_at, updated_at=(_value) updated_at=, user_id user_id, user_id=(_value) user_id=

Constructor methods inherited from class StoreOrder::SaveOperation

new(record : T, params : Avram::Paramable, id : Int32 | Avram::Nothing = Avram::Nothing.new, created_at : Time | Avram::Nothing = Avram::Nothing.new, updated_at : Time | Avram::Nothing = Avram::Nothing.new, store_id : Store::PrimaryKeyType | Avram::Nothing = Avram::Nothing.new, user_id : User::PrimaryKeyType | Avram::Nothing = Avram::Nothing.new, planned_delivery_date : Time | Avram::Nothing | Nil = Avram::Nothing.new, delivered_at : Time | Avram::Nothing | Nil = Avram::Nothing.new, total_cost : Float64 | Avram::Nothing = Avram::Nothing.new, total_weight : Float64 | Avram::Nothing = Avram::Nothing.new)
new(params : Avram::Paramable, id : Int32 | Avram::Nothing = Avram::Nothing.new, created_at : Time | Avram::Nothing = Avram::Nothing.new, updated_at : Time | Avram::Nothing = Avram::Nothing.new, store_id : Store::PrimaryKeyType | Avram::Nothing = Avram::Nothing.new, user_id : User::PrimaryKeyType | Avram::Nothing = Avram::Nothing.new, planned_delivery_date : Time | Avram::Nothing | Nil = Avram::Nothing.new, delivered_at : Time | Avram::Nothing | Nil = Avram::Nothing.new, total_cost : Float64 | Avram::Nothing = Avram::Nothing.new, total_weight : Float64 | Avram::Nothing = Avram::Nothing.new)
new(record : T, id : Int32 | Avram::Nothing = Avram::Nothing.new, created_at : Time | Avram::Nothing = Avram::Nothing.new, updated_at : Time | Avram::Nothing = Avram::Nothing.new, store_id : Store::PrimaryKeyType | Avram::Nothing = Avram::Nothing.new, user_id : User::PrimaryKeyType | Avram::Nothing = Avram::Nothing.new, planned_delivery_date : Time | Avram::Nothing | Nil = Avram::Nothing.new, delivered_at : Time | Avram::Nothing | Nil = Avram::Nothing.new, total_cost : Float64 | Avram::Nothing = Avram::Nothing.new, total_weight : Float64 | Avram::Nothing = Avram::Nothing.new)
new(id : Int32 | Avram::Nothing = Avram::Nothing.new, created_at : Time | Avram::Nothing = Avram::Nothing.new, updated_at : Time | Avram::Nothing = Avram::Nothing.new, store_id : Store::PrimaryKeyType | Avram::Nothing = Avram::Nothing.new, user_id : User::PrimaryKeyType | Avram::Nothing = Avram::Nothing.new, planned_delivery_date : Time | Avram::Nothing | Nil = Avram::Nothing.new, delivered_at : Time | Avram::Nothing | Nil = Avram::Nothing.new, total_cost : Float64 | Avram::Nothing = Avram::Nothing.new, total_weight : Float64 | Avram::Nothing = Avram::Nothing.new)
new

Class methods inherited from class StoreOrder::SaveOperation

create(params, id : Int32 | Avram::Nothing = Avram::Nothing.new, created_at : Time | Avram::Nothing = Avram::Nothing.new, updated_at : Time | Avram::Nothing = Avram::Nothing.new, store_id : Store::PrimaryKeyType | Avram::Nothing = Avram::Nothing.new, user_id : User::PrimaryKeyType | Avram::Nothing = Avram::Nothing.new, planned_delivery_date : Time | Avram::Nothing | Nil = Avram::Nothing.new, delivered_at : Time | Avram::Nothing | Nil = Avram::Nothing.new, total_cost : Float64 | Avram::Nothing = Avram::Nothing.new, total_weight : Float64 | Avram::Nothing = Avram::Nothing.new, &)
create(id : Int32 | Avram::Nothing = Avram::Nothing.new, created_at : Time | Avram::Nothing = Avram::Nothing.new, updated_at : Time | Avram::Nothing = Avram::Nothing.new, store_id : Store::PrimaryKeyType | Avram::Nothing = Avram::Nothing.new, user_id : User::PrimaryKeyType | Avram::Nothing = Avram::Nothing.new, planned_delivery_date : Time | Avram::Nothing | Nil = Avram::Nothing.new, delivered_at : Time | Avram::Nothing | Nil = Avram::Nothing.new, total_cost : Float64 | Avram::Nothing = Avram::Nothing.new, total_weight : Float64 | Avram::Nothing = Avram::Nothing.new, &)
create(params : Hash, **named_args, &)
create
, create!(params, id : Int32 | Avram::Nothing = Avram::Nothing.new, created_at : Time | Avram::Nothing = Avram::Nothing.new, updated_at : Time | Avram::Nothing = Avram::Nothing.new, store_id : Store::PrimaryKeyType | Avram::Nothing = Avram::Nothing.new, user_id : User::PrimaryKeyType | Avram::Nothing = Avram::Nothing.new, planned_delivery_date : Time | Avram::Nothing | Nil = Avram::Nothing.new, delivered_at : Time | Avram::Nothing | Nil = Avram::Nothing.new, total_cost : Float64 | Avram::Nothing = Avram::Nothing.new, total_weight : Float64 | Avram::Nothing = Avram::Nothing.new)
create!(id : Int32 | Avram::Nothing = Avram::Nothing.new, created_at : Time | Avram::Nothing = Avram::Nothing.new, updated_at : Time | Avram::Nothing = Avram::Nothing.new, store_id : Store::PrimaryKeyType | Avram::Nothing = Avram::Nothing.new, user_id : User::PrimaryKeyType | Avram::Nothing = Avram::Nothing.new, planned_delivery_date : Time | Avram::Nothing | Nil = Avram::Nothing.new, delivered_at : Time | Avram::Nothing | Nil = Avram::Nothing.new, total_cost : Float64 | Avram::Nothing = Avram::Nothing.new, total_weight : Float64 | Avram::Nothing = Avram::Nothing.new)
create!(params : Hash, **named_args)
create!
, update(record : T, with params, id : Int32 | Avram::Nothing = Avram::Nothing.new, created_at : Time | Avram::Nothing = Avram::Nothing.new, updated_at : Time | Avram::Nothing = Avram::Nothing.new, store_id : Store::PrimaryKeyType | Avram::Nothing = Avram::Nothing.new, user_id : User::PrimaryKeyType | Avram::Nothing = Avram::Nothing.new, planned_delivery_date : Time | Avram::Nothing | Nil = Avram::Nothing.new, delivered_at : Time | Avram::Nothing | Nil = Avram::Nothing.new, total_cost : Float64 | Avram::Nothing = Avram::Nothing.new, total_weight : Float64 | Avram::Nothing = Avram::Nothing.new, &)
update(record : T, id : Int32 | Avram::Nothing = Avram::Nothing.new, created_at : Time | Avram::Nothing = Avram::Nothing.new, updated_at : Time | Avram::Nothing = Avram::Nothing.new, store_id : Store::PrimaryKeyType | Avram::Nothing = Avram::Nothing.new, user_id : User::PrimaryKeyType | Avram::Nothing = Avram::Nothing.new, planned_delivery_date : Time | Avram::Nothing | Nil = Avram::Nothing.new, delivered_at : Time | Avram::Nothing | Nil = Avram::Nothing.new, total_cost : Float64 | Avram::Nothing = Avram::Nothing.new, total_weight : Float64 | Avram::Nothing = Avram::Nothing.new, &)
update(record : T, params : Hash, **named_args, &)
update
, update!(record : T, with params, id : Int32 | Avram::Nothing = Avram::Nothing.new, created_at : Time | Avram::Nothing = Avram::Nothing.new, updated_at : Time | Avram::Nothing = Avram::Nothing.new, store_id : Store::PrimaryKeyType | Avram::Nothing = Avram::Nothing.new, user_id : User::PrimaryKeyType | Avram::Nothing = Avram::Nothing.new, planned_delivery_date : Time | Avram::Nothing | Nil = Avram::Nothing.new, delivered_at : Time | Avram::Nothing | Nil = Avram::Nothing.new, total_cost : Float64 | Avram::Nothing = Avram::Nothing.new, total_weight : Float64 | Avram::Nothing = Avram::Nothing.new)
update!(record : T, id : Int32 | Avram::Nothing = Avram::Nothing.new, created_at : Time | Avram::Nothing = Avram::Nothing.new, updated_at : Time | Avram::Nothing = Avram::Nothing.new, store_id : Store::PrimaryKeyType | Avram::Nothing = Avram::Nothing.new, user_id : User::PrimaryKeyType | Avram::Nothing = Avram::Nothing.new, planned_delivery_date : Time | Avram::Nothing | Nil = Avram::Nothing.new, delivered_at : Time | Avram::Nothing | Nil = Avram::Nothing.new, total_cost : Float64 | Avram::Nothing = Avram::Nothing.new, total_weight : Float64 | Avram::Nothing = Avram::Nothing.new)
update!(record : T, params : Hash, **named_args)
update!

Constructor Detail

def self.new(record : T, params : Avram::Paramable, id : Int32 | Avram::Nothing = Avram::Nothing.new, created_at : Time | Avram::Nothing = Avram::Nothing.new, updated_at : Time | Avram::Nothing = Avram::Nothing.new, store_id : Store::PrimaryKeyType | Avram::Nothing = Avram::Nothing.new, user_id : User::PrimaryKeyType | Avram::Nothing = Avram::Nothing.new, planned_delivery_date : Time | Avram::Nothing | Nil = Avram::Nothing.new, delivered_at : Time | Avram::Nothing | Nil = Avram::Nothing.new, total_cost : Float64 | Avram::Nothing = Avram::Nothing.new, total_weight : Float64 | Avram::Nothing = Avram::Nothing.new) #

@type is not correct in this method, but is in the macro we call below That is why this extrac macro was extracted. We need @type to get the attributes for this SaveOperation


def self.new(params : Avram::Paramable, id : Int32 | Avram::Nothing = Avram::Nothing.new, created_at : Time | Avram::Nothing = Avram::Nothing.new, updated_at : Time | Avram::Nothing = Avram::Nothing.new, store_id : Store::PrimaryKeyType | Avram::Nothing = Avram::Nothing.new, user_id : User::PrimaryKeyType | Avram::Nothing = Avram::Nothing.new, planned_delivery_date : Time | Avram::Nothing | Nil = Avram::Nothing.new, delivered_at : Time | Avram::Nothing | Nil = Avram::Nothing.new, total_cost : Float64 | Avram::Nothing = Avram::Nothing.new, total_weight : Float64 | Avram::Nothing = Avram::Nothing.new) #

@type is not correct in this method, but is in the macro we call below That is why this extrac macro was extracted. We need @type to get the attributes for this SaveOperation


def self.new(record : T, id : Int32 | Avram::Nothing = Avram::Nothing.new, created_at : Time | Avram::Nothing = Avram::Nothing.new, updated_at : Time | Avram::Nothing = Avram::Nothing.new, store_id : Store::PrimaryKeyType | Avram::Nothing = Avram::Nothing.new, user_id : User::PrimaryKeyType | Avram::Nothing = Avram::Nothing.new, planned_delivery_date : Time | Avram::Nothing | Nil = Avram::Nothing.new, delivered_at : Time | Avram::Nothing | Nil = Avram::Nothing.new, total_cost : Float64 | Avram::Nothing = Avram::Nothing.new, total_weight : Float64 | Avram::Nothing = Avram::Nothing.new) #

@type is not correct in this method, but is in the macro we call below That is why this extrac macro was extracted. We need @type to get the attributes for this SaveOperation


def self.new(id : Int32 | Avram::Nothing = Avram::Nothing.new, created_at : Time | Avram::Nothing = Avram::Nothing.new, updated_at : Time | Avram::Nothing = Avram::Nothing.new, store_id : Store::PrimaryKeyType | Avram::Nothing = Avram::Nothing.new, user_id : User::PrimaryKeyType | Avram::Nothing = Avram::Nothing.new, planned_delivery_date : Time | Avram::Nothing | Nil = Avram::Nothing.new, delivered_at : Time | Avram::Nothing | Nil = Avram::Nothing.new, total_cost : Float64 | Avram::Nothing = Avram::Nothing.new, total_weight : Float64 | Avram::Nothing = Avram::Nothing.new) #

@type is not correct in this method, but is in the macro we call below That is why this extrac macro was extracted. We need @type to get the attributes for this SaveOperation


Class Method Detail

def self.create(params, id : Int32 | Avram::Nothing = Avram::Nothing.new, created_at : Time | Avram::Nothing = Avram::Nothing.new, updated_at : Time | Avram::Nothing = Avram::Nothing.new, store_id : Store::PrimaryKeyType | Avram::Nothing = Avram::Nothing.new, user_id : User::PrimaryKeyType | Avram::Nothing = Avram::Nothing.new, planned_delivery_date : Time | Avram::Nothing | Nil = Avram::Nothing.new, delivered_at : Time | Avram::Nothing | Nil = Avram::Nothing.new, total_cost : Float64 | Avram::Nothing = Avram::Nothing.new, total_weight : Float64 | Avram::Nothing = Avram::Nothing.new, &) #

@type is not correct in this method, but is in the macro we call below That is why this extrac macro was extracted. We need @type to get the attributes for this SaveOperation


def self.create(id : Int32 | Avram::Nothing = Avram::Nothing.new, created_at : Time | Avram::Nothing = Avram::Nothing.new, updated_at : Time | Avram::Nothing = Avram::Nothing.new, store_id : Store::PrimaryKeyType | Avram::Nothing = Avram::Nothing.new, user_id : User::PrimaryKeyType | Avram::Nothing = Avram::Nothing.new, planned_delivery_date : Time | Avram::Nothing | Nil = Avram::Nothing.new, delivered_at : Time | Avram::Nothing | Nil = Avram::Nothing.new, total_cost : Float64 | Avram::Nothing = Avram::Nothing.new, total_weight : Float64 | Avram::Nothing = Avram::Nothing.new, &) #

@type is not correct in this method, but is in the macro we call below That is why this extrac macro was extracted. We need @type to get the attributes for this SaveOperation


def self.create(params : Hash, **named_args, &) #

@type is not correct in this method, but is in the macro we call below That is why this extrac macro was extracted. We need @type to get the attributes for this SaveOperation


def self.create!(params, id : Int32 | Avram::Nothing = Avram::Nothing.new, created_at : Time | Avram::Nothing = Avram::Nothing.new, updated_at : Time | Avram::Nothing = Avram::Nothing.new, store_id : Store::PrimaryKeyType | Avram::Nothing = Avram::Nothing.new, user_id : User::PrimaryKeyType | Avram::Nothing = Avram::Nothing.new, planned_delivery_date : Time | Avram::Nothing | Nil = Avram::Nothing.new, delivered_at : Time | Avram::Nothing | Nil = Avram::Nothing.new, total_cost : Float64 | Avram::Nothing = Avram::Nothing.new, total_weight : Float64 | Avram::Nothing = Avram::Nothing.new) #

@type is not correct in this method, but is in the macro we call below That is why this extrac macro was extracted. We need @type to get the attributes for this SaveOperation


def self.create!(id : Int32 | Avram::Nothing = Avram::Nothing.new, created_at : Time | Avram::Nothing = Avram::Nothing.new, updated_at : Time | Avram::Nothing = Avram::Nothing.new, store_id : Store::PrimaryKeyType | Avram::Nothing = Avram::Nothing.new, user_id : User::PrimaryKeyType | Avram::Nothing = Avram::Nothing.new, planned_delivery_date : Time | Avram::Nothing | Nil = Avram::Nothing.new, delivered_at : Time | Avram::Nothing | Nil = Avram::Nothing.new, total_cost : Float64 | Avram::Nothing = Avram::Nothing.new, total_weight : Float64 | Avram::Nothing = Avram::Nothing.new) #

@type is not correct in this method, but is in the macro we call below That is why this extrac macro was extracted. We need @type to get the attributes for this SaveOperation


def self.create!(params : Hash, **named_args) #

@type is not correct in this method, but is in the macro we call below That is why this extrac macro was extracted. We need @type to get the attributes for this SaveOperation


def self.update(record : T, with params, id : Int32 | Avram::Nothing = Avram::Nothing.new, created_at : Time | Avram::Nothing = Avram::Nothing.new, updated_at : Time | Avram::Nothing = Avram::Nothing.new, store_id : Store::PrimaryKeyType | Avram::Nothing = Avram::Nothing.new, user_id : User::PrimaryKeyType | Avram::Nothing = Avram::Nothing.new, planned_delivery_date : Time | Avram::Nothing | Nil = Avram::Nothing.new, delivered_at : Time | Avram::Nothing | Nil = Avram::Nothing.new, total_cost : Float64 | Avram::Nothing = Avram::Nothing.new, total_weight : Float64 | Avram::Nothing = Avram::Nothing.new, &) #

@type is not correct in this method, but is in the macro we call below That is why this extrac macro was extracted. We need @type to get the attributes for this SaveOperation


def self.update(record : T, id : Int32 | Avram::Nothing = Avram::Nothing.new, created_at : Time | Avram::Nothing = Avram::Nothing.new, updated_at : Time | Avram::Nothing = Avram::Nothing.new, store_id : Store::PrimaryKeyType | Avram::Nothing = Avram::Nothing.new, user_id : User::PrimaryKeyType | Avram::Nothing = Avram::Nothing.new, planned_delivery_date : Time | Avram::Nothing | Nil = Avram::Nothing.new, delivered_at : Time | Avram::Nothing | Nil = Avram::Nothing.new, total_cost : Float64 | Avram::Nothing = Avram::Nothing.new, total_weight : Float64 | Avram::Nothing = Avram::Nothing.new, &) #

@type is not correct in this method, but is in the macro we call below That is why this extrac macro was extracted. We need @type to get the attributes for this SaveOperation


def self.update(record : T, params : Hash, **named_args, &) #

@type is not correct in this method, but is in the macro we call below That is why this extrac macro was extracted. We need @type to get the attributes for this SaveOperation


def self.update!(record : T, with params, id : Int32 | Avram::Nothing = Avram::Nothing.new, created_at : Time | Avram::Nothing = Avram::Nothing.new, updated_at : Time | Avram::Nothing = Avram::Nothing.new, store_id : Store::PrimaryKeyType | Avram::Nothing = Avram::Nothing.new, user_id : User::PrimaryKeyType | Avram::Nothing = Avram::Nothing.new, planned_delivery_date : Time | Avram::Nothing | Nil = Avram::Nothing.new, delivered_at : Time | Avram::Nothing | Nil = Avram::Nothing.new, total_cost : Float64 | Avram::Nothing = Avram::Nothing.new, total_weight : Float64 | Avram::Nothing = Avram::Nothing.new) #

@type is not correct in this method, but is in the macro we call below That is why this extrac macro was extracted. We need @type to get the attributes for this SaveOperation


def self.update!(record : T, id : Int32 | Avram::Nothing = Avram::Nothing.new, created_at : Time | Avram::Nothing = Avram::Nothing.new, updated_at : Time | Avram::Nothing = Avram::Nothing.new, store_id : Store::PrimaryKeyType | Avram::Nothing = Avram::Nothing.new, user_id : User::PrimaryKeyType | Avram::Nothing = Avram::Nothing.new, planned_delivery_date : Time | Avram::Nothing | Nil = Avram::Nothing.new, delivered_at : Time | Avram::Nothing | Nil = Avram::Nothing.new, total_cost : Float64 | Avram::Nothing = Avram::Nothing.new, total_weight : Float64 | Avram::Nothing = Avram::Nothing.new) #

@type is not correct in this method, but is in the macro we call below That is why this extrac macro was extracted. We need @type to get the attributes for this SaveOperation


def self.update!(record : T, params : Hash, **named_args) #

@type is not correct in this method, but is in the macro we call below That is why this extrac macro was extracted. We need @type to get the attributes for this SaveOperation


Instance Method Detail

def delivered_at #

[View source]
def planned_delivery_date #

[View source]
def set_attributes(id : Int32 | Avram::Nothing = Avram::Nothing.new, created_at : Time | Avram::Nothing = Avram::Nothing.new, updated_at : Time | Avram::Nothing = Avram::Nothing.new, store_id : Store::PrimaryKeyType | Avram::Nothing = Avram::Nothing.new, user_id : User::PrimaryKeyType | Avram::Nothing = Avram::Nothing.new, planned_delivery_date : Time | Avram::Nothing | Nil = Avram::Nothing.new, delivered_at : Time | Avram::Nothing | Nil = Avram::Nothing.new, total_cost : Float64 | Avram::Nothing = Avram::Nothing.new, total_weight : Float64 | Avram::Nothing = Avram::Nothing.new) #

@type is not correct in this method, but is in the macro we call below That is why this extrac macro was extracted. We need @type to get the attributes for this SaveOperation


def store_id #

[View source]
def total_cost #

[View source]
def total_weight #

[View source]
def user_id #

[View source]

Macro Detail

macro param_key(key) #