Class: PlanMyStuff::BaseMetadata

Inherits:
Object
  • Object
show all
Defined in:
lib/plan_my_stuff/base_metadata.rb

Constant Summary collapse

SCHEMA_VERSION =
'1'

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeBaseMetadata

Returns a new instance of BaseMetadata.



92
93
94
95
# File 'lib/plan_my_stuff/base_metadata.rb', line 92

def initialize
  @visibility = 'internal'
  @custom_fields = {}
end

Instance Attribute Details

#app_nameString?

Returns consuming app name from config.

Returns:

  • (String, nil)

    consuming app name from config



17
18
19
# File 'lib/plan_my_stuff/base_metadata.rb', line 17

def app_name
  @app_name
end

#created_byInteger?

Returns consuming app’s user ID of the creator.

Returns:

  • (Integer, nil)

    consuming app’s user ID of the creator



19
20
21
# File 'lib/plan_my_stuff/base_metadata.rb', line 19

def created_by
  @created_by
end

#custom_fieldsPlanMyStuff::CustomFields?

Returns app-defined custom field values.

Returns:



23
24
25
# File 'lib/plan_my_stuff/base_metadata.rb', line 23

def custom_fields
  @custom_fields
end

#gem_versionString

Returns gem version that created this metadata.

Returns:

  • (String)

    gem version that created this metadata



13
14
15
# File 'lib/plan_my_stuff/base_metadata.rb', line 13

def gem_version
  @gem_version
end

#rails_envString?

Returns Rails environment.

Returns:

  • (String, nil)

    Rails environment



15
16
17
# File 'lib/plan_my_stuff/base_metadata.rb', line 15

def rails_env
  @rails_env
end

#schema_versionString

Returns schema version for forward compatibility (starts at “1”).

Returns:

  • (String)

    schema version for forward compatibility (starts at “1”)



11
12
13
# File 'lib/plan_my_stuff/base_metadata.rb', line 11

def schema_version
  @schema_version
end

#visibilityString

Returns “public” or “internal”.

Returns:

  • (String)

    “public” or “internal”



21
22
23
# File 'lib/plan_my_stuff/base_metadata.rb', line 21

def visibility
  @visibility
end

Instance Method Details

#internal?Boolean

Returns:

  • (Boolean)


111
112
113
# File 'lib/plan_my_stuff/base_metadata.rb', line 111

def internal?
  visibility == 'internal'
end

#public?Boolean

Returns:

  • (Boolean)


116
117
118
# File 'lib/plan_my_stuff/base_metadata.rb', line 116

def public?
  visibility == 'public'
end

#to_hHash

Returns:

  • (Hash)


98
99
100
101
102
103
104
105
106
107
108
# File 'lib/plan_my_stuff/base_metadata.rb', line 98

def to_h
  {
    schema_version: schema_version,
    gem_version: gem_version,
    rails_env: rails_env,
    app_name: app_name,
    created_by: created_by,
    visibility: visibility,
    custom_fields: custom_fields.to_h,
  }
end

#to_jsonString

Returns:

  • (String)


131
132
133
# File 'lib/plan_my_stuff/base_metadata.rb', line 131

def to_json(...)
  to_h.to_json(...)
end

#validate_custom_fields!true

Validates custom fields against the schema.

Returns:

  • (true)

Raises:

  • (ActiveModel::ValidationError)

    if validation fails



126
127
128
# File 'lib/plan_my_stuff/base_metadata.rb', line 126

def validate_custom_fields!
  custom_fields.validate! if custom_fields.is_a?(PlanMyStuff::CustomFields)
end