Lexicon Module, codegen current lexicons

Use esquema (github:fatfingers23/esquema@9ef00b9) to generate rust code
for the lexicons that we have.

Currently, esquema doesn't seem to support top level integer types. I've
opted to temporarily remove `indexProgress` from my.spoor.log.activity
while compiling, and then adding it back afterwards.

I could compile esquema with the following added to my flake.nix
```
nativeBuildInputs = with pkgs; [
  pkg-config
  openssl
  openssl.dev
];
PKG_CONFIG_PATH = "${pkgs.openssl.dev}/lib/pkgconfig";
```
at a later date I will add it as a dependency, but I spent a while
trying to package esquema to no results.
This commit is contained in:
Julia Lange 2025-05-07 16:29:08 -07:00
parent 0210da9708
commit 090cb6631e
Signed by: Julia
SSH key fingerprint: SHA256:5DJcfxa5/fKCYn57dcabJa2vN2e6eT0pBerYi5SUbto
11 changed files with 245 additions and 0 deletions

View file

@ -0,0 +1,26 @@
// @generated - This file is generated by esquema-codegen (forked from atrium-codegen). DO NOT EDIT.
//!Definitions for the `my.spoor.log.activity` namespace.
use atrium_api::types::TryFromUnknown;
#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct RecordData {
///Client-declared timestamp for when this activity was created
pub created_at: atrium_api::types::string::Datetime,
///User-declared timestamp for when they performed the activity. Null implies unknown time.
#[serde(skip_serializing_if = "core::option::Option::is_none")]
pub performed_at: core::option::Option<atrium_api::types::string::Datetime>,
pub progress: atrium_api::types::Union<RecordProgressRefs>,
pub session: crate::com::atproto::repo::strong_ref::Main,
}
pub type Record = atrium_api::types::Object<RecordData>;
impl From<atrium_api::types::Unknown> for RecordData {
fn from(value: atrium_api::types::Unknown) -> Self {
Self::try_from_unknown(value).unwrap()
}
}
#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)]
#[serde(tag = "$type")]
pub enum RecordProgressRefs {
#[serde(rename = "my.spoor.log.activity#indexProgress")]
MySpoorLogActivityIndexProgress(Box<crate::my::spoor::log::activity::IndexProgress>),
}