問題タブ [rust-diesel]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
rust - 異なる環境用に複数のenvファイルを設定するrust Diesel-cli
私は錆びたプログラミングが初めてです。disel-cli の仕組みを学ぼうとしています。これは、エクスプレス ノード プロジェクトの knex によく似ています。
次のコマンドを使用して2つの移行ファイルを作成しました-
環境変数を渡すことで、これら 2 つのリージョン ( dev / prod )のいずれかに移行を実行したいと考えています。どうすればいいのですか?
rust - Rust を使用してバイナリで直接拡張する必要があるライブラリを使用してモデルを共有するにはどうすればよいですか?
構築中のサービスのコード ベースでデータ構造 (モデル) を共有できるようにしたいと考えています。domain
現在、コードを という名前のライブラリと という名前のバイナリに分割していますlog_service
。
ライブラリでは、domain
以下に示すように、ログの情報を含む構造を定義しました。
バイナリでは、ディーゼルをデータベース ORM として使用し、ライブラリlog_service
で定義されたこの構造をテーブルとして使用したいと考えています。domain
ディーゼルのドキュメントには、この構造をデータベース テーブルとして使用するには、特定の特性 (例: Queryable
) を取得し、場合によっては他の属性を適用する必要があると記載されています。
ただし、Rust は別のクレート内からこの構造体を拡張することを許可していません。Rust には継承が存在しないため、通常、コンポジションを使用してdomain
ログをラップするオプションがあります。しかし、ディーゼルは構造体を使用してテーブルに直接マップするため、コンポジションを使用してフィールドを公開することはできません。フィールドは構造体の最上位にある必要があるためです。
できれば、両方のクレートにこの構造体をコピーして貼り付けたくないでしょう。マクロを使用して、単一のソースから両方のコード ベースでこれらの構造を生成することを考えていました。これにより、バイナリでログを拡張することができます。
これを解決する最適な方法は何でしょうか?
rust - Rust Diesel でタイムスタンプと間隔を使って算術演算を行う方法
タイムスタンプと時間間隔の演算と比較を行うフィルター式を使用して、ディーゼル クエリを作成しようとしています。次の式は、そのままのディーゼルを使用して書くことはできないと思います。残念ながら、私はsql(...)
関数を使用する大ハンマー アプローチに頼っています。
私の(省略された)スキーマ:
私の質問:
- 私が間違っている?カスタムタイプのないディーゼルでこれを書くことはできますか?
- これがバニラ ディーゼルで記述できない場合、これをよりタイプ セーフでディーゼルに適した表現に分割するにはどうすればよいでしょうか? どの部分がカスタムで、どの特性を実装する必要がありますか?