Module: Familia
- Extended by:
- Connection, IdentifierExtractor, Logging, SecureIdentifier, Settings, Utils
- Defined in:
- lib/familia.rb,
lib/familia/base.rb,
lib/familia/utils.rb,
lib/familia/errors.rb,
lib/familia/horreum.rb,
lib/familia/logging.rb,
lib/familia/features.rb,
lib/familia/settings.rb,
lib/familia/data_type.rb,
lib/familia/migration.rb,
lib/familia/connection.rb,
lib/familia/encryption.rb,
lib/familia/field_type.rb,
lib/familia/horreum/utils.rb,
lib/familia/migration/base.rb,
lib/familia/instrumentation.rb,
lib/familia/json_serializer.rb,
lib/familia/migration/model.rb,
lib/familia/schema_registry.rb,
lib/familia/horreum/settings.rb,
lib/familia/migration/errors.rb,
lib/familia/migration/runner.rb,
lib/familia/migration/script.rb,
lib/familia/secure_identifier.rb,
lib/familia/data_type/settings.rb,
lib/familia/encryption/manager.rb,
lib/familia/features/safe_dump.rb,
lib/familia/horreum/connection.rb,
lib/familia/horreum/definition.rb,
lib/familia/horreum/management.rb,
lib/familia/migration/pipeline.rb,
lib/familia/migration/registry.rb,
lib/familia/connection/behavior.rb,
lib/familia/connection/handlers.rb,
lib/familia/encryption/provider.rb,
lib/familia/encryption/registry.rb,
lib/familia/features/expiration.rb,
lib/familia/horreum/persistence.rb,
lib/familia/data_type/connection.rb,
lib/familia/data_type/types/lock.rb,
lib/familia/identifier_extractor.rb,
lib/familia/migration/rake_tasks.rb,
lib/familia/connection/middleware.rb,
lib/familia/connection/operations.rb,
lib/familia/features/quantization.rb,
lib/familia/horreum/serialization.rb,
lib/familia/refinements/dear_json.rb,
lib/familia/thread_safety/monitor.rb,
lib/familia/verifiable_identifier.rb,
lib/familia/features/relationships.rb,
lib/familia/horreum/related_fields.rb,
lib/familia/data_type/class_methods.rb,
lib/familia/data_type/serialization.rb,
lib/familia/data_type/types/counter.rb,
lib/familia/data_type/types/hashkey.rb,
lib/familia/data_type/types/listkey.rb,
lib/familia/encryption/request_cache.rb,
lib/familia/connection/operation_core.rb,
lib/familia/connection/pipelined_core.rb,
lib/familia/data_type/types/stringkey.rb,
lib/familia/encryption/encrypted_data.rb,
lib/familia/features/encrypted_fields.rb,
lib/familia/features/transient_fields.rb,
lib/familia/horreum/database_commands.rb,
lib/familia/refinements/stylize_words.rb,
lib/familia/refinements/time_literals.rb,
lib/familia/data_type/types/sorted_set.rb,
lib/familia/features/object_identifier.rb,
lib/familia/features/schema_validation.rb,
lib/familia/connection/transaction_core.rb,
lib/familia/data_type/database_commands.rb,
lib/familia/data_type/types/unsorted_set.rb,
lib/familia/features/external_identifier.rb,
lib/familia/data_type/types/json_stringkey.rb,
lib/familia/features/expiration/extensions.rb,
lib/familia/features/relationships/indexing.rb,
lib/familia/thread_safety/instrumented_mutex.rb,
lib/familia/connection/individual_command_proxy.rb,
lib/familia/features/relationships/participation.rb,
lib/familia/encryption/providers/aes_gcm_provider.rb,
lib/familia/features/relationships/score_encoding.rb,
lib/familia/features/relationships/collection_operations.rb,
lib/familia/features/relationships/indexing_relationship.rb,
lib/familia/features/encrypted_fields/encrypted_field_type.rb,
lib/familia/features/transient_fields/transient_field_type.rb,
lib/familia/features/relationships/participation_membership.rb,
lib/familia/encryption/providers/xchacha20_poly1305_provider.rb,
lib/familia/features/relationships/participation_relationship.rb,
lib/familia/features/relationships/indexing/rebuild_strategies.rb,
lib/familia/features/relationships/participation/target_methods.rb,
lib/familia/features/relationships/indexing/multi_index_generators.rb,
lib/familia/encryption/providers/secure_xchacha20_poly1305_provider.rb,
lib/familia/features/relationships/indexing/unique_index_generators.rb,
lib/familia/features/relationships/participation/participant_methods.rb,
lib/familia/features/relationships/participation/through_model_operations.rb
Overview
lib/familia/features/relationships/participation/through_model_operations.rb
frozen_string_literal: true
Defined Under Namespace
Modules: Base, Connection, Encryption, Features, IdentifierExtractor, Instrumentation, JsonSerializer, Logging, Migration, Refinements, SecureIdentifier, Settings, ThreadSafety, Utils, VerifiableIdentifier Classes: AutoloadError, Counter, CreationError, DataType, EncryptedFieldType, EncryptionError, FamiliaLogger, FieldType, FieldTypeError, HashKey, Horreum, HorreumError, JsonSchemerValidator, JsonStringKey, KeyNotFoundError, ListKey, Lock, LogFormatter, NestedTransactionError, NoConnectionAvailable, NoIdentifier, NonUniqueKey, NotConnected, NotDistinguishableError, NotFound, NullValidator, OperationModeError, OptimisticLockError, PersistenceError, Problem, RecordExistsError, SchemaRegistry, SchemaValidationError, SerializerError, SortedSet, StringKey, TransientFieldType, UnknownFieldError, UnsortedSet
Constant Summary collapse
- FeatureDefinition =
Data.define(:name, :depends_on, :field_group)
- VALID_STRATEGIES =
%i[raise skip ignore warn overwrite].freeze
- RelatedFieldDefinition =
Data.define(:name, :klass, :opts)
Constants included from Connection
Connection::DefaultConnectionHandler
Class Attribute Summary collapse
-
.debug ⇒ Object
writeonly
Sets the attribute debug.
-
.members ⇒ Object
readonly
Returns the value of attribute members.
Attributes included from Connection
Attributes included from Connection::Middleware
#enable_database_counter, #enable_database_logging
Attributes included from Settings
#current_key_version, #default_expiration, #delim, #encryption_keys, #encryption_personalization, #logical_database, #prefix, #schema_path, #schema_validator, #schemas, #suffix, #transaction_mode
Class Method Summary collapse
-
.clear_anonymous_members ⇒ Array<Class>
Remove all anonymous/test classes from members array.
-
.configure {|_self| ... } ⇒ Object
A convenience pattern for configuring Familia.
-
.debug? ⇒ Boolean
Checks if debug mode is enabled.
- .resolve_class(target) ⇒ Object
- .start_monitoring! ⇒ Object
- .stop_monitoring! ⇒ Object
-
.test_mode? ⇒ Boolean
Check if we're in test mode by looking for test-related constants or environment variables.
- .thread_safety_metrics ⇒ Object
-
.thread_safety_monitor ⇒ Object
Thread safety monitoring controls.
- .thread_safety_report ⇒ Object
-
.unload_member(klass) ⇒ Class?
Remove a member class from the members array.
Methods included from SecureIdentifier
generate_id, generate_lite_id, generate_trace_id, shorten_to_trace_id, truncate_hex
Methods included from Connection
build_connection_chain, create_dbclient, dbclient, normalize_uri
Methods included from Connection::Operations
#pipelined, #transaction, #with_dbclient, #with_isolated_dbclient
Methods included from Connection::Middleware
#clear_fiber_connection!, #fiber_connection=, #increment_middleware_version!, #middleware_version, #reconnect!
Methods included from Settings
configure, default_suffix, pipelined_mode, pipelined_mode=
Methods included from Logging
debug, error, extended, info, logger, logger=, trace, warn
Methods included from Utils
dbkey, join, now, now_in_μs, pretty_path, pretty_stack, qstamp, serverid, split
Methods included from IdentifierExtractor
Class Attribute Details
.debug=(value) ⇒ Object (writeonly)
Sets the attribute debug
47 48 49 |
# File 'lib/familia.rb', line 47 def debug=(value) @debug = value end |
.members ⇒ Object (readonly)
Returns the value of attribute members.
48 49 50 |
# File 'lib/familia.rb', line 48 def members @members end |
Class Method Details
.clear_anonymous_members ⇒ Array<Class>
Remove all anonymous/test classes from members array. Anonymous classes have nil names, which cause issues in member_by_config_name.
124 125 126 127 128 129 |
# File 'lib/familia.rb', line 124 def clear_anonymous_members anonymous_classes = @members.select { |m| m.name.nil? } Familia.debug "[clear_anonymous_members] Removing #{anonymous_classes.size} anonymous classes" @members.reject! { |m| m.name.nil? } anonymous_classes end |
.configure {|_self| ... } ⇒ Object
A convenience pattern for configuring Familia.
96 97 98 |
# File 'lib/familia.rb', line 96 def configure yield self end |
.debug? ⇒ Boolean
Checks if debug mode is enabled
e.g. Familia.debug = true
105 106 107 |
# File 'lib/familia.rb', line 105 def debug? @debug == true end |
.resolve_class(target) ⇒ Object
75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/familia.rb', line 75 def resolve_class(target) case target when Class target when ::String, Symbol config_name = target.to_s.demodularize.snake_case member_by_config_name(config_name) else raise ArgumentError, "Expected Class, String, or Symbol, got #{target.class}" end end |
.start_monitoring! ⇒ Object
55 56 57 |
# File 'lib/familia.rb', line 55 def start_monitoring! thread_safety_monitor.start! end |
.stop_monitoring! ⇒ Object
59 60 61 |
# File 'lib/familia.rb', line 59 def stop_monitoring! thread_safety_monitor.stop! end |
.test_mode? ⇒ Boolean
Check if we're in test mode by looking for test-related constants or environment variables
135 136 137 |
# File 'lib/familia.rb', line 135 def test_mode? defined?(Tryouts) || ENV['FAMILIA_TEST_MODE'] == 'true' end |
.thread_safety_metrics ⇒ Object
67 68 69 |
# File 'lib/familia.rb', line 67 def thread_safety_metrics thread_safety_monitor.export_metrics end |
.thread_safety_monitor ⇒ Object
Thread safety monitoring controls
51 52 53 |
# File 'lib/familia.rb', line 51 def thread_safety_monitor ThreadSafety::Monitor.instance end |
.thread_safety_report ⇒ Object
63 64 65 |
# File 'lib/familia.rb', line 63 def thread_safety_report thread_safety_monitor.report end |
.unload_member(klass) ⇒ Class?
Remove a member class from the members array. Used for test cleanup to prevent anonymous classes from polluting the global registry.
115 116 117 118 |
# File 'lib/familia.rb', line 115 def unload_member(klass) Familia.debug "[unload_member] Removing #{klass} from members" @members.delete(klass) end |