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

Chain don't need new database connection #17

Open
mehmetuken opened this issue Jan 4, 2023 · 4 comments
Open

Chain don't need new database connection #17

mehmetuken opened this issue Jan 4, 2023 · 4 comments
Assignees

Comments

@mehmetuken
Copy link
Contributor

https://github.com/testnetrunn/explorer-backend/blob/af62ba5176e23456198bf0da3f9f957175d3d9dc/src/state.rs#L29
burada her chain için yeni bir veritabanı oluşturmaya gerek yok diye düşünüyorum. tek bir bağlantı üzerinden her chain ayrı bir veritabanı olarak devam edebilir.

@Errorist79
Copy link
Member

wdyt @amorfc

@amorfc
Copy link
Member

amorfc commented Jan 4, 2023

https://github.com/testnetrunn/explorer-backend/blob/af62ba5176e23456198bf0da3f9f957175d3d9dc/src/state.rs#L29
burada her chain için yeni bir veritabanı oluşturmaya gerek yok diye düşünüyorum. tek bir bağlantı üzerinden her chain ayrı bir veritabanı olarak devam edebilir.

Bu tasarımda sanırım DB connectionlarından dolayı , devamlı ilgili chaine dbsine kayıt giriyoruz (txs,blocks gibi) tek dbdense her dbye ilgili connectionlar kullanılacak şekilde tasarlanmış diye düşündüğüm için dokunmadım açıkçası

@mehmetuken
Copy link
Contributor Author

Burda client i bir kere oluşturup DatabaseTr de new de parametre olarak sadece client ve database name geçebiliriz.

DatabaseTR ye create_client diye bir method koyalım static
https://github.com/testnetrunn/explorer-backend/blob/92422d54d446e699e0c8078c97fd074dd26163e0/src/state.rs#L22
burda client oluşturalım sadece ve o clienti new de alıp direk orada client olarak ekleyip ikinci parametrede db_name alalım db yi de set edelim ve bitsin. change_name e gerek yok. sadece bunu ownershipde nasıl yaparız bilmiyorum. böyle bir kurgu

database_tr.rs

#[derive(Clone)]
pub struct DatabaseTR {
    /// The MongoDB client that works with a MongoDB instance.
    client: Client,

    /// Database name and chain name are the same.
    database: Database,
}

pub async fn new(client: Client, db_name: &str) -> DatabaseTR {
        DatabaseTR {
            client: client,
            database: client.database(db_name),
        }
    }

pub async fn create_client() -> Client{
   let uri = std::env::var("MONGODB_URI").expect("MONGODB_URI must be set in .env file");
   (Client::with_uri_str(uri).await.expect("Cannot connect to MongoDB instance."));
}

@Errorist79
Copy link
Member

@amorfc bu issue için ne diyorsun?

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

No branches or pull requests

3 participants