Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

watermelon_db_sync

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

watermelon_db_sync

  • 0.1.0
  • Rubygems
  • Socket score

Version published
Maintainers
1
Created
Source

WatermelonDbSync

Make synchronize pull & push easier & faster.

This gem is built to handle synchronize between pull & push with WatermelonDb even you are use different library and keep the synchronization throguh API then you can use this gem, basically this gem follows this article to handle the sync How to Build WatermelonDB Sync Backend in Elixir which is using Auto-incrementing Counter (Version) + Timestamp for Tracking Changes approach, but this is a Ruby version of it

Features

  • Seamless sync between WatermelonDB and Rails through API endpoint.
  • Customizable sync strategies.
  • Easy integration with existing Rails applications.
  • Supported Postgresql

WatermelonDB Sync

Installation

Add this line to your application's Gemfile:

gem 'watermelon_db_sync'

You can find the gem on RubyGems.

After updating the Gemfile, run:

$ bundle install

Or, install the gem manually using:

$ gem install watermelon_db_sync

Getting Started

To set up the gem, you need to run the installation generator:

rails g watermelon_db_sync:install

This will:

  • Create an initializer at config/initializers/watermelon_db_sync.rb where all configuration options are described.
  • Generate a migration to create a global sequence table: db/migrate/[timestamp]_create_sequence.rb.

Adding Sync Fields to a Model

Once you have the basic setup, you can add sync fields to an existing model. This assumes that the table (e.g., orders) already exists in your database. To add sync fields, run:

rails g watermelon_db_sync:add_sync_fields Order

This will generate a migration that adds the necessary sync fields to the orders table.

Next run:

rails db:migrate

Usage

Pull:

sync_pull = WatermelonDbSync::SyncPull.new(last_pulled_version: 0)
sync_pull.pull
sync_pull.data[:response]

response:

{:orders=>
  {:created=>
    [{"id"=>1,
      "name"=>"asdasad",
      "phone"=>nil,
      "created_at"=>"2024-09-11T11:31:07.867Z",
      "updated_at"=>"2024-09-11T11:43:06.214Z",
      "version"=>1,
      "version_created"=>2,
      "created_at_server"=>"2024-09-11T11:31:07.869Z",
      "updated_at_server"=>"2024-09-11T11:31:07.869Z",
      "deleted_at_server"=>nil,
      "push_id"=>nil}],
   :deleted=>[],
   :updated=>[]}}

  Push:
  data={
    "orders": {
      "created": [
        {
          "id": "1",
          "name": "Cust 1"
        }
      ],
      "updated": [
        {
          "id": "1",
          "name": "Cust Edit"
        }
      ],
      "deleted": []
    }
  }
    sync_push = WatermelonDbSync::SyncPush.new(data)
    sync_push.push
    sync_push.data[:success]
    => true

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/aapiw/watermelon_db_sync. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the code of conduct.

FAQs

Package last updated on 11 Sep 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc