Class: DecisionAgent::ABTesting::Storage::Adapter

Inherits:
Object
  • Object
show all
Defined in:
lib/decision_agent/ab_testing/storage/adapter.rb

Overview

Base adapter interface for A/B test persistence

Direct Known Subclasses

ActiveRecordAdapter, MemoryAdapter

Instance Method Summary collapse

Instance Method Details

#delete_test(test_id) ⇒ Boolean

Delete a test and its assignments

Parameters:

  • test_id (String, Integer)

    The test ID

Returns:

  • (Boolean)

    True if deleted

Raises:

  • (NotImplementedError)


63
64
65
# File 'lib/decision_agent/ab_testing/storage/adapter.rb', line 63

def delete_test(test_id)
  raise NotImplementedError, "#{self.class} must implement #delete_test"
end

#get_assignments(test_id) ⇒ Array<ABTestAssignment>

Get assignments for a test

Parameters:

  • test_id (String, Integer)

    The test ID

Returns:

Raises:

  • (NotImplementedError)


56
57
58
# File 'lib/decision_agent/ab_testing/storage/adapter.rb', line 56

def get_assignments(test_id)
  raise NotImplementedError, "#{self.class} must implement #get_assignments"
end

#get_test(test_id) ⇒ ABTest?

Get an A/B test by ID

Parameters:

  • test_id (String, Integer)

    The test ID

Returns:

  • (ABTest, nil)

    The test or nil

Raises:

  • (NotImplementedError)


18
19
20
# File 'lib/decision_agent/ab_testing/storage/adapter.rb', line 18

def get_test(test_id)
  raise NotImplementedError, "#{self.class} must implement #get_test"
end

#list_tests(status: nil, limit: nil) ⇒ Array<ABTest>

List A/B tests

Parameters:

  • status (String, nil) (defaults to: nil)

    Filter by status

  • limit (Integer, nil) (defaults to: nil)

    Limit results

Returns:

  • (Array<ABTest>)

    Array of tests

Raises:

  • (NotImplementedError)


34
35
36
# File 'lib/decision_agent/ab_testing/storage/adapter.rb', line 34

def list_tests(status: nil, limit: nil)
  raise NotImplementedError, "#{self.class} must implement #list_tests"
end

#save_assignment(assignment) ⇒ ABTestAssignment

Save an assignment

Parameters:

Returns:

Raises:

  • (NotImplementedError)


41
42
43
# File 'lib/decision_agent/ab_testing/storage/adapter.rb', line 41

def save_assignment(assignment)
  raise NotImplementedError, "#{self.class} must implement #save_assignment"
end

#save_test(test) ⇒ ABTest

Save an A/B test

Parameters:

  • test (ABTest)

    The test to save

Returns:

  • (ABTest)

    The saved test with ID

Raises:

  • (NotImplementedError)


11
12
13
# File 'lib/decision_agent/ab_testing/storage/adapter.rb', line 11

def save_test(test)
  raise NotImplementedError, "#{self.class} must implement #save_test"
end

#update_assignment(assignment_id, attributes) ⇒ ABTestAssignment

Update an assignment

Parameters:

  • assignment_id (String, Integer)

    The assignment ID

  • attributes (Hash)

    Attributes to update

Returns:

Raises:

  • (NotImplementedError)


49
50
51
# File 'lib/decision_agent/ab_testing/storage/adapter.rb', line 49

def update_assignment(assignment_id, attributes)
  raise NotImplementedError, "#{self.class} must implement #update_assignment"
end

#update_test(test_id, attributes) ⇒ ABTest

Update an A/B test

Parameters:

  • test_id (String, Integer)

    The test ID

  • attributes (Hash)

    Attributes to update

Returns:

  • (ABTest)

    The updated test

Raises:

  • (NotImplementedError)


26
27
28
# File 'lib/decision_agent/ab_testing/storage/adapter.rb', line 26

def update_test(test_id, attributes)
  raise NotImplementedError, "#{self.class} must implement #update_test"
end