Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: LEP-001 Introduce Lake Context #68

Merged
merged 5 commits into from
Apr 28, 2023
Merged

Conversation

khorolets
Copy link
Member

Implements #54

We will have two methods in Lake:

  • run() that accepts a user-defined function that expects only the Block
  • run_with_context() that accepts a user-defined function and a Context.
fn main() -> anyhow::Result<()> {
    struct MyContext {
        pub my_field: String,
    }

    let context = MyContext {
       my_field: "my_value".to_string(),
    };

    near_lake_framework::LakeBuilder::default()
        .testnet()
        .start_block_height(112205773)
        .build()?
        .run_with_context(handle_block, &context)
}

async fn handle_block(
    _block: near_lake_primitives::block::Block, 
    context: &MyContext
) -> anyhow::Result<()> { 
    Ok(())
}

After that, the user-defined function (handle_block in my example) will be receiving the reference to the context user has provided on each block.

This PR still requires a few clean-ups, and documentation updates before it can be reviewed.

@khorolets khorolets changed the base branch from main to dev-0.8.0 April 26, 2023 12:07
@khorolets khorolets marked this pull request as ready for review April 27, 2023 08:42
## Tutorials:

- <https://youtu.be/GsF7I93K-EQ>
- [Migrating to NEAR Lake Framework](https://near-indexers.io/tutorials/lake/migrating-to-near-lake-framework) from [NEAR Indexer Framework](https://near-indexers.io/docs/projects/near-indexer-framework)

### More examples

You might want to have a look at the alwaya up-to-date examples in [`examples`](https://github.com/near/near-lake-framework-rs/tree/main/lake-framework/examples) folder.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure what is alwaya, maybe a typo here?

Copy link

@eduohe eduohe left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just a small potential typo, but looks good

Copy link
Contributor

@morgsmccauley morgsmccauley left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice!

@khorolets khorolets force-pushed the feat/lep-002-context branch from 3a9011d to 5debc21 Compare April 28, 2023 10:34
@khorolets khorolets merged commit 78849f3 into dev-0.8.0 Apr 28, 2023
khorolets added a commit that referenced this pull request Jun 6, 2023
* feat: Implement LEP-001 (Context)

* clean up Lake impl to reuse code

* Update docstrings

* refactor: Resolves #42 replace anyhow with LakeError enum (thiserror) (#70)

* fix: typo in README
khorolets added a commit that referenced this pull request Jun 6, 2023
* feat: NEAR Lake Helper (high-level Lake Framework) (#51)

* feat: NEAR Lake Helper (high-level Lake Framework)

* cover all top-level primitives

* Update changelog

* Add getters to fields in primitives, update the required function, change Event structure

* chore: Closes #61: Changes made to the lib should be picked to 0.8.0

* fix(tests): Resolved #60: Fix failing doc tests (#66)

* fix(tests): Resolved #60: Fix failing doc tests

* fix: add proper code annotations where possible

* feat(primitives): Add support for DelegateAction (NEP-366) + LEP-002 (Focus on action and Events) (#67)

* feat(primitives): Add support for DelegateAction (NEP-336)

* Refactor the structures completely (LEP-002)

* (examples) Address review suggestions

* remove refactoring commented leftovers

* (primitives) Address review suggestion, optimize the structure, do some renaming

* Return iterators from methods instead of clone, improve return types, handle tx actions

* add todo for later to create dedicated structures for possible errors of Failure ExecutionStatus

* DelegateAction struct, split receipts file

* remove commented code

* expose delegate_actions mod

* feat: Expose concurrency parameter to the Lake structure (and builder) (#69)

* feat: LEP-001 Introduce Lake Context (#68)

* feat: Implement LEP-001 (Context)

* clean up Lake impl to reuse code

* Update docstrings

* refactor: Resolves #42 replace anyhow with LakeError enum (thiserror) (#70)

* fix: typo in README

* fix: CHANGELOG typos and bring back the concurrency usage lost during merging

* feat: ParentTransactionCache context and example (#74)

* feat: ParentTransactionCache context and example

* Update README for ParentTransactionCache about advanced usage

* refactor: Add LakeContext derive and introduce a concept of LakeContext with calls before and after user function

* Update lake-parent-transaction-cache/README.md

Co-authored-by: Morgan McCauley <[email protected]>

* address review suggestion rename field accounts_id -> account_ids

* add comments to the example, add READMEs, drop accidental artifact

* Update documentation, add docs about the LakeContext

* Add ParentTransactionCache to the Lake Framework README

* refactor Lake::run method to drop code duplication

---------

Co-authored-by: Morgan McCauley <[email protected]>

* docs: Lake Primitives documentation added (#75)

* feat: ParentTransactionCache context and example

* Update documentation, add docs about the LakeContext

* docs: Lake Primitives documentation added

* chore: Upgrade near primitives to 0.17.0 version (#77)

* chore: Prepare 0.8.0-beta.1 release (#78)

* chore: Prepare 0.8.0-beta.1 release

* Change to use CUSTOM_GITHUB_TOKEN and add a link to the workflow for the reasoning

* Setup versioning and add release-plz.toml

* Drop the release-plz job limitation on the CI job

* Add missing versions to the changelog

* Add 0.7.x branch to the CI

---------

Co-authored-by: Morgan McCauley <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants