- fix: Update API routes to include DOI URL handling and improve route organization - chore: Add ORCID preload rule file and ensure proper registration - docs: Add MIT License to the project for open-source compliance - feat: Implement command to detect and fix missing dataset cross-references - feat: Create command for updating DataCite DOI records with detailed logging and error handling - docs: Add comprehensive documentation for dataset indexing command - docs: Create detailed documentation for DataCite update command with usage examples and error handling
205 lines
No EOL
5 KiB
Markdown
205 lines
No EOL
5 KiB
Markdown
# Tethys Research Repository Backend System
|
|
|
|
Welcome to the Tethys Research Repository Backend System! This is the backend component responsible for managing datasets, users, and the core functionality of the Tethys Data Research Repository.
|
|
|
|
## Table of Contents
|
|
|
|
- [Getting Started](#getting-started)
|
|
- [Prerequisites](#prerequisites)
|
|
- [Installation](#installation)
|
|
- [Usage](#usage)
|
|
- [Configuration](#configuration)
|
|
- [Database](#database)
|
|
- [API Documentation](#api-documentation)
|
|
- [Commands](#commands)
|
|
- [Documentation](#documentation)
|
|
- [Contributing](#contributing)
|
|
- [License](#license)
|
|
|
|
## Getting Started
|
|
|
|
### Prerequisites
|
|
|
|
Before you begin, ensure you have met the following requirements:
|
|
|
|
- Node.js and npm installed on your development machine.
|
|
- A running PostgreSQL database instance.
|
|
- AdonisJS CLI globally installed.
|
|
|
|
### Installation
|
|
|
|
1. Clone this repository:
|
|
|
|
```bash
|
|
git clone git clone https://gitea.geologie.ac.at/geolba/tethys.backend.git
|
|
cd tethys-backend
|
|
```
|
|
|
|
2. Install dependencies:
|
|
|
|
```bash
|
|
npm install
|
|
```
|
|
|
|
3. Configure environment variables (see [Configuration](#configuration))
|
|
|
|
4. Run database migrations:
|
|
|
|
```bash
|
|
node ace migration:run
|
|
```
|
|
|
|
5. Start the development server:
|
|
|
|
```bash
|
|
npm run dev
|
|
```
|
|
|
|
## Usage
|
|
|
|
The Tethys Backend provides RESTful APIs for managing research datasets, user authentication, DOI registration, and search functionality.
|
|
|
|
## Configuration
|
|
|
|
Copy the `.env.example` file to `.env` and configure the following variables:
|
|
|
|
### Database Configuration
|
|
```bash
|
|
DB_CONNECTION=pg
|
|
DB_HOST=localhost
|
|
DB_PORT=5432
|
|
DB_USER=your_username
|
|
DB_PASSWORD=your_password
|
|
DB_DATABASE=tethys_db
|
|
```
|
|
|
|
### DataCite Configuration
|
|
```bash
|
|
# DataCite Credentials
|
|
DATACITE_USERNAME=your_datacite_username
|
|
DATACITE_PASSWORD=your_datacite_password
|
|
DATACITE_PREFIX=10.21388
|
|
|
|
# Environment-specific API endpoints
|
|
DATACITE_API_URL=https://api.test.datacite.org # Test environment
|
|
DATACITE_SERVICE_URL=https://mds.test.datacite.org # Test MDS
|
|
|
|
# For production:
|
|
# DATACITE_API_URL=https://api.datacite.org
|
|
# DATACITE_SERVICE_URL=https://mds.datacite.org
|
|
```
|
|
|
|
### OpenSearch Configuration
|
|
```bash
|
|
OPENSEARCH_HOST=localhost:9200
|
|
```
|
|
|
|
### Application Configuration
|
|
```bash
|
|
BASE_DOMAIN=tethys.at
|
|
APP_KEY=your_app_key
|
|
```
|
|
|
|
## Database
|
|
|
|
The system uses PostgreSQL with Lucid ORM. Key models include:
|
|
|
|
- **Dataset**: Research dataset metadata
|
|
- **DatasetIdentifier**: DOI and other identifiers for datasets
|
|
- **User**: User management and authentication
|
|
- **XmlCache**: Cached XML metadata
|
|
|
|
Run migrations and seeders:
|
|
|
|
```bash
|
|
# Run migrations
|
|
node ace migration:run
|
|
|
|
# Run seeders (if available)
|
|
node ace db:seed
|
|
```
|
|
|
|
## API Documentation
|
|
|
|
API endpoints are available for:
|
|
|
|
- Dataset management (`/api/datasets`)
|
|
- User authentication (`/api/auth`)
|
|
- DOI registration (`/api/doi`)
|
|
- Search functionality (`/api/search`)
|
|
|
|
*Detailed API documentation can be found in the `/docs/api` directory.*
|
|
|
|
## Commands
|
|
|
|
The system includes several Ace commands for maintenance and data management:
|
|
|
|
### Dataset Indexing
|
|
```bash
|
|
# Index all published datasets to OpenSearch
|
|
node ace index:datasets
|
|
|
|
# Index a specific dataset
|
|
node ace index:datasets --publish_id 123
|
|
```
|
|
|
|
### DataCite DOI Management
|
|
```bash
|
|
# Update DataCite records for modified datasets
|
|
node ace update:datacite
|
|
|
|
# Show detailed statistics for datasets needing updates
|
|
node ace update:datacite --stats
|
|
|
|
# Preview what would be updated (dry run)
|
|
node ace update:datacite --dry-run
|
|
|
|
# Force update all DOI records
|
|
node ace update:datacite --force
|
|
|
|
# Update a specific dataset
|
|
node ace update:datacite --publish_id 123
|
|
```
|
|
|
|
*For detailed command documentation, see the [Commands Documentation](docs/commands/)*
|
|
|
|
## Documentation
|
|
|
|
Comprehensive documentation is available in the `/docs` directory:
|
|
|
|
- **[Commands Documentation](docs/commands/)** - Detailed guides for Ace commands
|
|
- [DataCite Update Command](docs/commands/update-datacite.md) - DOI synchronization and management
|
|
- [Dataset Indexing Command](docs/commands/index-datasets.md) - Search index management
|
|
- **[API Documentation](docs/api/)** - REST API endpoints and usage
|
|
- **[Deployment Guide](docs/deployment/)** - Production deployment instructions
|
|
- **[Configuration Guide](docs/configuration/)** - Environment setup and configuration options
|
|
|
|
## Contributing
|
|
|
|
1. Fork the repository
|
|
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
|
|
3. Commit your changes (`git commit -m 'Add some amazing feature'`)
|
|
4. Push to the branch (`git push origin feature/amazing-feature`)
|
|
5. Open a Pull Request
|
|
|
|
### Development Guidelines
|
|
|
|
- Follow the existing code style and conventions
|
|
- Write tests for new features
|
|
- Update documentation for any API changes
|
|
- Ensure all commands and migrations work properly
|
|
|
|
### Testing Commands
|
|
|
|
```bash
|
|
# Run tests
|
|
npm test
|
|
|
|
# Test specific commands
|
|
node ace update:datacite --dry-run --publish_id 123
|
|
node ace index:datasets --publish_id 123
|
|
```
|
|
|
|
## License
|
|
|
|
This project is licensed under the [MIT License](LICENSE). |