Issue:
[FEATURE] Allow rotating and revoking API keys

### Feature Description

As of now, the `merchant_account` table has an `api_key` field which restricts a merchant account to only have one API key. Furthermore, there are no mechanisms in place to revoke and regenerate API keys. To improve the convenience of rotating and revoking API keys, it'd be better to allow multiple API keys to be associated with a merchant account. Furthermore, API keys are stored in plaintext as of now. It'd be great if they could be hashed as well, when this request is addressed.

### Possible Implementation

A possible approach to address this is to add an `api_keys` table with `name`, `merchant_id`, `hashed_key` fields (including any additional fields as necessary). And for the API interface, this could include endpoints to create, retrieve, update and revoke an API key, and an endpoint to list all API keys associated with the current merchant account.

### Have you spent some time to check if this feature request has been raised before?

- [X] I checked and didn't find similar issue

### Have you read the Contributing Guidelines?

- [X] I have read the [Contributing Guidelines](https://github.com/juspay/hyperswitch/blob/main/docs/CONTRIBUTING.md)

### Are you willing to submit a PR?

Yes I am willing to submit a PR!

Resolution:
<think>
PR Context:
- Title: feat(generics): allow specifying optional offset and order clauses for `generic_filter()`
- Merged: 2023-02-06T12:23:38Z
- Files changed: 7 files
- Commits: 4 commits

Implementation approach:
## Type of Change
<!-- Put an `x` in the boxes that apply -->

- [ ] Bugfix
- [ ] New feature
- [x] Enhancement
- [ ] Refactoring
- [ ] Dependency updates

## Description
<!-- Describe your changes in detail -->
This PR updates the `generic_filter()` function to accept an optional `offset` parameter.

## Motivation and Context
<!--
Why is this change required? What problem does it solve?
If it fixes an open issue, please link to the issue here.

If you don't have an issue, we'd
</think>

To implement this, you'll need to modify:


**Detailed Implementation:**


**Commit 1:** feat(generics): allow specifying optional offset and order clauses for `generic_filter()` (#502)
Files to modify:


**crates/storage_models/src/query/generics.rs**
  Modify existing code

**crates/storage_models/src/query/mandate.rs**
  Modify existing code

**crates/storage_models/src/query/merchant_connector_account.rs**
  Modify existing code

**crates/storage_models/src/query/payment_attempt.rs**
  Modify existing code

**crates/storage_models/src/query/payment_method.rs**
  Modify existing code

**crates/storage_models/src/query/process_tracker.rs**
  Modify existing code

**crates/storage_models/src/query/refund.rs**
  Modify existing code