Module: Woods::Storage::MetadataStore::Interface

Included in:
InMemory, SQLite
Defined in:
lib/woods/storage/metadata_store.rb

Overview

Interface that all metadata store adapters must implement.

Instance Method Summary collapse

Instance Method Details

#countInteger

Return the total number of stored units.

Returns:

  • (Integer)

    Total count

Raises:

  • (NotImplementedError)

    if not implemented by adapter



91
92
93
# File 'lib/woods/storage/metadata_store.rb', line 91

def count
  raise NotImplementedError
end

#delete(id) ⇒ Object

Delete a unit by ID.

Parameters:

  • id (String)

    The identifier to delete

Raises:

  • (NotImplementedError)

    if not implemented by adapter



83
84
85
# File 'lib/woods/storage/metadata_store.rb', line 83

def delete(id)
  raise NotImplementedError
end

#find(id) ⇒ Hash?

Find a unit by ID.

Parameters:

  • id (String)

    The identifier to look up

Returns:

  • (Hash, nil)

    The stored metadata, or nil if not found

Raises:

  • (NotImplementedError)

    if not implemented by adapter



42
43
44
# File 'lib/woods/storage/metadata_store.rb', line 42

def find(id)
  raise NotImplementedError
end

#find_batch(ids) ⇒ Hash<String, Hash>

Find multiple units by IDs in a single query.

Default implementation falls back to individual find calls. Adapters should override for batch-optimized behavior.

Parameters:

  • ids (Array<String>)

    The identifiers to look up

Returns:

  • (Hash<String, Hash>)

    Map of id => metadata for found units



53
54
55
56
57
58
# File 'lib/woods/storage/metadata_store.rb', line 53

def find_batch(ids)
  ids.each_with_object({}) do |id, result|
    data = find(id)
    result[id] = data if data
  end
end

#find_by_type(type) ⇒ Array<Hash>

Find all units of a given type.

Parameters:

  • type (String)

    The unit type to filter by

Returns:

  • (Array<Hash>)

    Matching metadata records

Raises:

  • (NotImplementedError)

    if not implemented by adapter



65
66
67
# File 'lib/woods/storage/metadata_store.rb', line 65

def find_by_type(type)
  raise NotImplementedError
end

#search(query, fields: nil) ⇒ Array<Hash>

Search metadata by text query across specified fields.

Parameters:

  • query (String)

    Text to search for

  • fields (Array<String>, nil) (defaults to: nil)

    Specific fields to search (nil = all)

Returns:

  • (Array<Hash>)

    Matching metadata records

Raises:

  • (NotImplementedError)

    if not implemented by adapter



75
76
77
# File 'lib/woods/storage/metadata_store.rb', line 75

def search(query, fields: nil)
  raise NotImplementedError
end

#store(id, metadata) ⇒ Object

Store or update metadata for a unit.

Parameters:

  • id (String)

    Unique identifier for the unit

  • metadata (Hash)

    Metadata to store

Raises:

  • (NotImplementedError)

    if not implemented by adapter



33
34
35
# File 'lib/woods/storage/metadata_store.rb', line 33

def store(id, )
  raise NotImplementedError
end