dynfork

Version, currently 0.8.1979 versions

github.com/kebasyaty/dynfork

ORM-like API MongoDB for Crystal language.

7 stars
1 dependent
License: MIT

Nothing has been indexed for 0.8.19 yet. The tag is recorded, its shard.yml has not been read, so the manifest and dependency list below are empty because they are unknown rather than because they are absent.

Installation

# Add this to your shard.yml
dependencies:
  dynfork:
    github: kebasyaty/dynfork
    version: ~> 0.8.19

Then run:

shards install

shard.yml

No shard.yml has been indexed for 0.8.19. You can read it on the repository.

Dependencies

Unknown: the shard.yml for this version has not been read yet.

README

This README is the one indexed from the repository at its latest ref, not from the tag for this version.

Compatible with MongoDB 3.6+. Tested against: 7.0, 8.0 For more information see Cryomongo.

Documentation

Online browsable documentation is available at https://kebasyaty.github.io/dynfork/.

Requirements

View the list of requirements.

Installation

  1. Install MongoDB (if not installed): Fedora Debian Ubuntu Linux Mint

  2. Install additional libraries (if not installed): Fedora Debian Ubuntu Linux Mint

  3. Add the dependency to your shard.yml:

    dependencies:
      dynfork:
        github: kebasyaty/dynfork
  4. Run shards install

Usage

It is recommended to look at examples here.

require "dynfork"

# Create your model.
@[DynFork::Meta(service_name: "Accounts")]
struct User < DynFork::Model
  getter username = DynFork::Fields::TextField.new
  getter email = DynFork::Fields::EmailField.new
  getter birthday = DynFork::Fields::DateField.new
end

# Initialize locale.
# https://github.com/crystal-i18n/i18n
I18n.config.loaders << I18n::Loader::YAML.new("config/locales")
I18n.config.default_locale = :en
I18n.init

# Run migration.
# https://elbywan.github.io/cryomongo/Mongo/Client.html
DynFork::Migration::Monitor.new(
  database_name: "test",
).migrat

# Create a user.
user = User.new

# Add user data.
user.username.value = "username"
user.email.value = "user@noreaply.net"
user.birthday.value = "1970-01-01"

# Save user.
# Hint: print_err - convenient for development.
user.print_err unless user.save

# Print user details.
puts "User details:"
if id = user.object_id
  pp User.find_one_to_hash({_id: id})
end

puts "Documwnt count: #{User.estimated_document_count}"

puts "Delete user."
user.delete

puts "Documwnt count: #{User.count_documents}"

See more examples here.

Model Parameters

See the documentation here.

( only service_name is a required parameter )

Example:

  @[DynFork::Meta(
    service_name: "ServiceName",
    fixture_name: "FixtureName",
    db_query_docs_limit: 1000,
    migrat_model?: true,
    create_doc?: true,
    update_doc?: true,
    delete_doc?: true,
  )]
  struct User < DynFork::Model
    getter username = DynFork::Fields::TextField.new
    getter birthday = DynFork::Fields::DateField.new
  end

Methods for developers

Links to documentation.

Model:

  • full_model_name
  • meta
  • subclasses
  • object_id

Extra:

  • add_validation
  • indexing
  • pre_create
  • post_create
  • pre_update
  • post_update
  • pre_delete
  • post_delete

Migration:

  • migrat

QPaladins:

  • valid?
  • save
  • print_err
  • delete
  • verify_password
  • update_password

QCommons:

  • aggregate
  • collection_name
  • count_documents
  • distinct
  • estimated_document_count
  • stats
  • find_many_to_hash_list
  • find_many_to_json
  • find_one_to_hash
  • find_one_to_instance
  • find_one_to_json
  • find_one_and_delete
  • unit_manager
  • delete_many
  • delete_one
  • bulk
  • bulk_write
  • create_index
  • create_indexes
  • drop_index
  • drop_indexes
  • list_indexes

F64Field:

  • finance_plus
  • finance_minus
  • finance_divide
  • finance_multiply

For currencies, use the Money shard.

Contributing

  1. Fork it (https://github.com/kebasyaty/dynfork/fork)
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

Contributors

  • kebasyaty Gennady Kostyunin - creator and maintainer

Changelog

View the change history.

License

This project is licensed under the MIT.