Mobile support to come.
mod create_repository;
mod get_repository_commits;
mod get_repository_file;
mod get_repository_file_commits;
mod get_repository_preview;
mod get_repository_tree;
use chrono::{DateTime, Utc};
use uuid::Uuid;
use crate::model::Repository;
pub use create_repository::CreateRepositoryRequest;
pub use get_repository_commits::GetRepositoryCommitsRequest;
pub use get_repository_file::{GetRepositoryFileRequest, RepositoryFileResponse};
pub use get_repository_file_commits::GetRepositoryFileCommitsRequest;
pub use get_repository_preview::{
FilePreview, GetRepositoryPreviewRequest, RepositoryPreviewEntry, RepositoryPreviewResponse,
};
pub use get_repository_tree::{
GetRepositoryTreeRequest, RepositoryTreeEntry, RepositoryTreeResponse,
};
#[derive(Debug, Clone)]
pub struct RepositoryResponse {
pub id: Uuid,
pub name: String,
pub owner: String,
pub visibility: String,
pub created_at: DateTime<Utc>,
}
impl From<Repository> for RepositoryResponse {
fn from(repo: Repository) -> Self {
Self {
id: repo.id,
name: repo.name,
owner: repo.owner_name,
visibility: repo.visibility.into(),
created_at: repo.created_at,
}
}
}
#[derive(Debug, Clone)]
pub struct RepositoryCommitsResponse {
pub commits: Vec<RepositoryCommitResponse>,
pub has_next: bool,
}
#[derive(Debug, Clone)]
pub struct RepositoryCommitResponse {
pub sha: String,
pub message: String,
pub date: DateTime<Utc>,
pub author: CommitAuthorResponse,
}
#[derive(Debug, Clone)]
pub struct CommitAuthorResponse {
pub id: Option<Uuid>,
pub name: String,
pub email: String,
}
impl From<&git2::Commit<'_>> for RepositoryCommitResponse {
fn from(commit: &git2::Commit) -> Self {
let git_author = commit.author();
Self {
sha: commit.id().to_string(),
message: commit.message().unwrap_or("").to_string(),
date: DateTime::from_timestamp(git_author.when().seconds(), 0).unwrap_or_default(),
author: CommitAuthorResponse {
id: None,
name: git_author.name().unwrap_or("Unknown").to_string(),
email: git_author.email().unwrap_or("").to_string(),
},
}
}
}
updated commits api to return gitdot user info if exist
mikkel•3060c5a6d ago
implemented file preview endpoint
mikkel•675c1287d ago
migrated get_repository_file_commits api
mike•3fe674c15d ago
migrated get commits
mike•7a6a65a16d ago
re-implemented get repo tree and file
mike•1de709416d ago
implemented boilerplate for get repo tree and file api
mike•ec579cb16d ago
updated all internal DTO to use newtypes for validation
mike•8d32ab016d ago
refactored repository core
mike•ca1236717d ago