pub struct GitLabSyncState {
pub requirement_id: Uuid,
pub spec_id: String,
pub gitlab_project_id: u64,
pub gitlab_issue_iid: u64,
pub gitlab_issue_id: u64,
pub linked_at: DateTime<Utc>,
pub last_sync: DateTime<Utc>,
pub aida_content_hash: String,
pub gitlab_content_hash: String,
pub link_origin: LinkOrigin,
pub sync_status: SyncStatus,
pub last_error: Option<String>,
}Expand description
Tracks sync state between an AIDA requirement and a GitLab issue
Fields§
§requirement_id: UuidAIDA requirement UUID
spec_id: StringAIDA spec-id (for display)
gitlab_project_id: u64GitLab project ID
gitlab_issue_iid: u64GitLab issue IID (project-scoped issue number)
gitlab_issue_id: u64GitLab issue global ID (for API operations)
linked_at: DateTime<Utc>When the link was created
last_sync: DateTime<Utc>Last successful sync timestamp
aida_content_hash: StringHash of AIDA content at last sync
gitlab_content_hash: StringHash of GitLab content at last sync
link_origin: LinkOriginHow the link was created
sync_status: SyncStatusCurrent sync status
last_error: Option<String>Last sync error message (if any)
Implementations§
Source§impl GitLabSyncState
impl GitLabSyncState
Sourcepub fn new(
requirement_id: Uuid,
spec_id: impl Into<String>,
gitlab_project_id: u64,
gitlab_issue_iid: u64,
gitlab_issue_id: u64,
link_origin: LinkOrigin,
) -> Self
pub fn new( requirement_id: Uuid, spec_id: impl Into<String>, gitlab_project_id: u64, gitlab_issue_iid: u64, gitlab_issue_id: u64, link_origin: LinkOrigin, ) -> Self
Create a new sync state for a newly created link
Sourcepub fn mark_synced(&mut self, aida_hash: String, gitlab_hash: String)
pub fn mark_synced(&mut self, aida_hash: String, gitlab_hash: String)
Update the sync state after a successful sync
Sourcepub fn mark_error(&mut self, error: impl Into<String>)
pub fn mark_error(&mut self, error: impl Into<String>)
Mark the sync state as having an error
Sourcepub fn hash_requirement(req: &Requirement) -> String
pub fn hash_requirement(req: &Requirement) -> String
Calculate content hash for an AIDA requirement Includes: title, description, status, priority, owner Excludes: timestamps, comments, history (too volatile)
Trait Implementations§
Source§impl Clone for GitLabSyncState
impl Clone for GitLabSyncState
Source§fn clone(&self) -> GitLabSyncState
fn clone(&self) -> GitLabSyncState
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for GitLabSyncState
impl Debug for GitLabSyncState
Source§impl<'de> Deserialize<'de> for GitLabSyncState
impl<'de> Deserialize<'de> for GitLabSyncState
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl Serialize for GitLabSyncState
impl Serialize for GitLabSyncState
Source§impl TS for GitLabSyncState
impl TS for GitLabSyncState
Source§type WithoutGenerics = GitLabSyncState
type WithoutGenerics = GitLabSyncState
If this type does not have generic parameters, then
WithoutGenerics should just be Self.
If the type does have generic parameters, then all generic parameters must be replaced with
a dummy type, e.g ts_rs::Dummy or ().
The only requirement for these dummy types is that EXPORT_TO must be None. Read moreSource§type OptionInnerType = GitLabSyncState
type OptionInnerType = GitLabSyncState
If the implementing type is
std::option::Option<T>, then this associated type is set to T.
All other implementations of TS should set this type to Self instead.Source§fn docs() -> Option<String>
fn docs() -> Option<String>
JSDoc comment to describe this type in TypeScript - when
TS is derived, docs are
automatically read from your doc comments or #[doc = ".."] attributesSource§fn decl_concrete() -> String
fn decl_concrete() -> String
Declaration of this type using the supplied generic arguments.
The resulting TypeScript definition will not be generic. For that, see
TS::decl().
If this type is not generic, then this function is equivalent to TS::decl().Source§fn decl() -> String
fn decl() -> String
Declaration of this type, e.g.
type User = { user_id: number, ... }.
This function will panic if the type has no declaration. Read moreSource§fn inline() -> String
fn inline() -> String
Formats this types definition in TypeScript, e.g
{ user_id: number }.
This function will panic if the type cannot be inlined.Source§fn inline_flattened() -> String
fn inline_flattened() -> String
Flatten a type declaration.
This function will panic if the type cannot be flattened.
This function will panic if the type cannot be flattened.
Source§fn visit_generics(v: &mut impl TypeVisitor)where
Self: 'static,
fn visit_generics(v: &mut impl TypeVisitor)where
Self: 'static,
Iterates over all type parameters of this type.
Source§fn output_path() -> Option<PathBuf>
fn output_path() -> Option<PathBuf>
Returns the output path to where
The returned path does not include the base directory from
T should be exported.The returned path does not include the base directory from
TS_RS_EXPORT_DIR. Read moreSource§fn visit_dependencies(v: &mut impl TypeVisitor)where
Self: 'static,
fn visit_dependencies(v: &mut impl TypeVisitor)where
Self: 'static,
Iterates over all dependency of this type.
Source§fn dependencies() -> Vec<Dependency>where
Self: 'static,
fn dependencies() -> Vec<Dependency>where
Self: 'static,
Resolves all dependencies of this type recursively.
Source§fn export() -> Result<(), ExportError>where
Self: 'static,
fn export() -> Result<(), ExportError>where
Self: 'static,
Manually export this type to the filesystem.
To export this type together with all of its dependencies, use
TS::export_all. Read moreSource§fn export_all() -> Result<(), ExportError>where
Self: 'static,
fn export_all() -> Result<(), ExportError>where
Self: 'static,
Manually export this type to the filesystem, together with all of its dependencies.
To export only this type, without its dependencies, use
To export only this type, without its dependencies, use
TS::export. Read moreSource§fn export_all_to(out_dir: impl AsRef<Path>) -> Result<(), ExportError>where
Self: 'static,
fn export_all_to(out_dir: impl AsRef<Path>) -> Result<(), ExportError>where
Self: 'static,
Manually export this type into the given directory, together with all of its dependencies.
To export only this type, without its dependencies, use
To export only this type, without its dependencies, use
TS::export. Read moreSource§fn export_to_string() -> Result<String, ExportError>where
Self: 'static,
fn export_to_string() -> Result<String, ExportError>where
Self: 'static,
Auto Trait Implementations§
impl Freeze for GitLabSyncState
impl RefUnwindSafe for GitLabSyncState
impl Send for GitLabSyncState
impl Sync for GitLabSyncState
impl Unpin for GitLabSyncState
impl UnsafeUnpin for GitLabSyncState
impl UnwindSafe for GitLabSyncState
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more