backend changes
This commit is contained in:
parent
d5d2508c58
commit
c7d0448518
@ -654,7 +654,9 @@ services:
|
|||||||
- GITHUB_CLIENT_ID=Ov23liQgF14aogXVZNCR
|
- GITHUB_CLIENT_ID=Ov23liQgF14aogXVZNCR
|
||||||
- GITHUB_CLIENT_SECRET=8bf82a29154fdccb837bc150539a2226d00b5da5
|
- GITHUB_CLIENT_SECRET=8bf82a29154fdccb837bc150539a2226d00b5da5
|
||||||
- GITHUB_REDIRECT_URI=http://localhost:8000/api/github/auth/github/callback
|
- GITHUB_REDIRECT_URI=http://localhost:8000/api/github/auth/github/callback
|
||||||
- ATTACHED_REPOS_DIR=/home/ubuntu/git/git-repo
|
- ATTACHED_REPOS_DIR=/tmp/git-repos
|
||||||
|
- GIT_REPOS_BASE_DIR=/tmp/git-repos
|
||||||
|
- GIT_DIFF_DIR=/tmp/git-repos/diffs
|
||||||
- SESSION_SECRET=git-integration-secret-key-2024
|
- SESSION_SECRET=git-integration-secret-key-2024
|
||||||
- JWT_ACCESS_SECRET=access-secret-key-2024-tech4biz-secure_pipeline_2024
|
- JWT_ACCESS_SECRET=access-secret-key-2024-tech4biz-secure_pipeline_2024
|
||||||
- API_GATEWAY_PUBLIC_URL=http://localhost:8000
|
- API_GATEWAY_PUBLIC_URL=http://localhost:8000
|
||||||
@ -677,10 +679,11 @@ services:
|
|||||||
# Additional environment variables for git-integration service
|
# Additional environment variables for git-integration service
|
||||||
- ENABLE_BACKGROUND_DIFF_PROCESSING=true
|
- ENABLE_BACKGROUND_DIFF_PROCESSING=true
|
||||||
- DIFF_PROCESSING_INTERVAL_MS=30000
|
- DIFF_PROCESSING_INTERVAL_MS=30000
|
||||||
- DIFF_STORAGE_PATH=/home/ubuntu/git/git-diff
|
- DIFF_STORAGE_PATH=/tmp/git-repos/diffs
|
||||||
|
- DIFF_STORAGE_DIR=/tmp/git-repos/diffs
|
||||||
- MAX_DIFF_SIZE_BYTES=10485760
|
- MAX_DIFF_SIZE_BYTES=10485760
|
||||||
volumes:
|
volumes:
|
||||||
- /home/ubuntu/git/git-repo
|
- git_repos_container_storage:/tmp/git-repos # Container-only storage using Docker volume
|
||||||
networks:
|
networks:
|
||||||
- pipeline_network
|
- pipeline_network
|
||||||
depends_on:
|
depends_on:
|
||||||
@ -853,6 +856,8 @@ volumes:
|
|||||||
driver: local
|
driver: local
|
||||||
migration_state:
|
migration_state:
|
||||||
driver: local
|
driver: local
|
||||||
|
git_repos_container_storage:
|
||||||
|
driver: local
|
||||||
|
|
||||||
# =====================================
|
# =====================================
|
||||||
# Networks
|
# Networks
|
||||||
|
|||||||
@ -13,6 +13,12 @@ class Database {
|
|||||||
connectionTimeoutMillis: 2000,
|
connectionTimeoutMillis: 2000,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Handle pool errors
|
||||||
|
this.pool.on('error', (err) => {
|
||||||
|
console.error('❌ Database pool error:', err.message);
|
||||||
|
// Don't crash the process, just log the error
|
||||||
|
});
|
||||||
|
|
||||||
// Test connection on startup
|
// Test connection on startup
|
||||||
this.testConnection();
|
this.testConnection();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -306,11 +306,11 @@ router.post('/attach-repository', async (req, res) => {
|
|||||||
|
|
||||||
// Store everything in PostgreSQL (without template_id)
|
// Store everything in PostgreSQL (without template_id)
|
||||||
const insertQuery = `
|
const insertQuery = `
|
||||||
INSERT INTO github_repositories (
|
INSERT INTO all_repositories (
|
||||||
repository_url, repository_name, owner_name,
|
repository_url, repository_name, owner_name,
|
||||||
branch_name, is_public, metadata, codebase_analysis, sync_status,
|
branch_name, is_public, metadata, codebase_analysis, sync_status,
|
||||||
requires_auth, user_id
|
requires_auth, user_id, provider_name
|
||||||
) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)
|
) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11)
|
||||||
RETURNING *
|
RETURNING *
|
||||||
`;
|
`;
|
||||||
|
|
||||||
@ -324,7 +324,8 @@ router.post('/attach-repository', async (req, res) => {
|
|||||||
JSON.stringify(codebaseAnalysis),
|
JSON.stringify(codebaseAnalysis),
|
||||||
'syncing', // Start with syncing status
|
'syncing', // Start with syncing status
|
||||||
!isPublicRepo, // requires_auth is true for private repos
|
!isPublicRepo, // requires_auth is true for private repos
|
||||||
userId || null
|
userId || null,
|
||||||
|
'github' // provider_name
|
||||||
];
|
];
|
||||||
|
|
||||||
const insertResult = await database.query(insertQuery, insertValues);
|
const insertResult = await database.query(insertQuery, insertValues);
|
||||||
@ -354,7 +355,7 @@ router.post('/attach-repository', async (req, res) => {
|
|||||||
// Update sync status based on download result
|
// Update sync status based on download result
|
||||||
const finalSyncStatus = downloadResult.success ? 'synced' : 'error';
|
const finalSyncStatus = downloadResult.success ? 'synced' : 'error';
|
||||||
await database.query(
|
await database.query(
|
||||||
'UPDATE github_repositories SET sync_status = $1, updated_at = NOW() WHERE id = $2',
|
'UPDATE all_repositories SET sync_status = $1, updated_at = NOW() WHERE id = $2',
|
||||||
[finalSyncStatus, repositoryRecord.id]
|
[finalSyncStatus, repositoryRecord.id]
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -650,7 +651,7 @@ router.get('/repository/:id/diff', async (req, res) => {
|
|||||||
const { id } = req.params;
|
const { id } = req.params;
|
||||||
const { from, to, path: dirPath } = req.query;
|
const { from, to, path: dirPath } = req.query;
|
||||||
|
|
||||||
const repoQuery = 'SELECT * FROM github_repositories WHERE id = $1';
|
const repoQuery = 'SELECT * FROM all_repositories WHERE id = $1';
|
||||||
const repoResult = await database.query(repoQuery, [id]);
|
const repoResult = await database.query(repoQuery, [id]);
|
||||||
if (repoResult.rows.length === 0) {
|
if (repoResult.rows.length === 0) {
|
||||||
return res.status(404).json({ success: false, message: 'Repository not found' });
|
return res.status(404).json({ success: false, message: 'Repository not found' });
|
||||||
@ -673,7 +674,7 @@ router.get('/repository/:id/changes', async (req, res) => {
|
|||||||
const { id } = req.params;
|
const { id } = req.params;
|
||||||
const { since } = req.query;
|
const { since } = req.query;
|
||||||
|
|
||||||
const repoQuery = 'SELECT * FROM github_repositories WHERE id = $1';
|
const repoQuery = 'SELECT * FROM all_repositories WHERE id = $1';
|
||||||
const repoResult = await database.query(repoQuery, [id]);
|
const repoResult = await database.query(repoQuery, [id]);
|
||||||
if (repoResult.rows.length === 0) {
|
if (repoResult.rows.length === 0) {
|
||||||
return res.status(404).json({ success: false, message: 'Repository not found' });
|
return res.status(404).json({ success: false, message: 'Repository not found' });
|
||||||
@ -702,7 +703,7 @@ router.get('/template/:id/repository', async (req, res) => {
|
|||||||
const query = `
|
const query = `
|
||||||
SELECT gr.*, rs.local_path, rs.storage_status, rs.total_files_count,
|
SELECT gr.*, rs.local_path, rs.storage_status, rs.total_files_count,
|
||||||
rs.total_directories_count, rs.total_size_bytes, rs.download_completed_at
|
rs.total_directories_count, rs.total_size_bytes, rs.download_completed_at
|
||||||
FROM github_repositories gr
|
FROM all_repositories gr
|
||||||
LEFT JOIN repository_storage rs ON gr.id = rs.repository_id
|
LEFT JOIN repository_storage rs ON gr.id = rs.repository_id
|
||||||
WHERE gr.template_id = $1
|
WHERE gr.template_id = $1
|
||||||
ORDER BY gr.created_at DESC
|
ORDER BY gr.created_at DESC
|
||||||
@ -753,7 +754,7 @@ router.get('/repository/:id/structure', async (req, res) => {
|
|||||||
const { path: directoryPath } = req.query;
|
const { path: directoryPath } = req.query;
|
||||||
|
|
||||||
// Get repository info
|
// Get repository info
|
||||||
const repoQuery = 'SELECT * FROM github_repositories WHERE id = $1';
|
const repoQuery = 'SELECT * FROM all_repositories WHERE id = $1';
|
||||||
const repoResult = await database.query(repoQuery, [id]);
|
const repoResult = await database.query(repoQuery, [id]);
|
||||||
|
|
||||||
if (repoResult.rows.length === 0) {
|
if (repoResult.rows.length === 0) {
|
||||||
@ -844,7 +845,7 @@ router.get('/repository/:id/files', async (req, res) => {
|
|||||||
const { directory_path = '' } = req.query;
|
const { directory_path = '' } = req.query;
|
||||||
|
|
||||||
// Get repository info
|
// Get repository info
|
||||||
const repoQuery = 'SELECT * FROM github_repositories WHERE id = $1';
|
const repoQuery = 'SELECT * FROM all_repositories WHERE id = $1';
|
||||||
const repoResult = await database.query(repoQuery, [id]);
|
const repoResult = await database.query(repoQuery, [id]);
|
||||||
|
|
||||||
if (repoResult.rows.length === 0) {
|
if (repoResult.rows.length === 0) {
|
||||||
@ -1043,7 +1044,7 @@ router.get('/template/:id/repositories', async (req, res) => {
|
|||||||
const query = `
|
const query = `
|
||||||
SELECT gr.*, rs.local_path, rs.storage_status, rs.total_files_count,
|
SELECT gr.*, rs.local_path, rs.storage_status, rs.total_files_count,
|
||||||
rs.total_directories_count, rs.total_size_bytes, rs.download_completed_at
|
rs.total_directories_count, rs.total_size_bytes, rs.download_completed_at
|
||||||
FROM github_repositories gr
|
FROM all_repositories gr
|
||||||
LEFT JOIN repository_storage rs ON gr.id = rs.repository_id
|
LEFT JOIN repository_storage rs ON gr.id = rs.repository_id
|
||||||
WHERE gr.template_id = $1
|
WHERE gr.template_id = $1
|
||||||
ORDER BY gr.created_at DESC
|
ORDER BY gr.created_at DESC
|
||||||
@ -1117,7 +1118,7 @@ router.post('/repository/:id/sync', async (req, res) => {
|
|||||||
const { id } = req.params;
|
const { id } = req.params;
|
||||||
|
|
||||||
// Get repository info
|
// Get repository info
|
||||||
const repoQuery = 'SELECT * FROM github_repositories WHERE id = $1';
|
const repoQuery = 'SELECT * FROM all_repositories WHERE id = $1';
|
||||||
const repoResult = await database.query(repoQuery, [id]);
|
const repoResult = await database.query(repoQuery, [id]);
|
||||||
|
|
||||||
if (repoResult.rows.length === 0) {
|
if (repoResult.rows.length === 0) {
|
||||||
@ -1140,7 +1141,7 @@ router.post('/repository/:id/sync', async (req, res) => {
|
|||||||
|
|
||||||
// Update sync status
|
// Update sync status
|
||||||
await database.query(
|
await database.query(
|
||||||
'UPDATE github_repositories SET sync_status = $1, updated_at = NOW() WHERE id = $2',
|
'UPDATE all_repositories SET sync_status = $1, updated_at = NOW() WHERE id = $2',
|
||||||
[downloadResult.success ? 'synced' : 'error', id]
|
[downloadResult.success ? 'synced' : 'error', id]
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -1165,7 +1166,7 @@ router.delete('/repository/:id', async (req, res) => {
|
|||||||
const { id } = req.params;
|
const { id } = req.params;
|
||||||
|
|
||||||
// Get repository info before deletion
|
// Get repository info before deletion
|
||||||
const getQuery = 'SELECT * FROM github_repositories WHERE id = $1';
|
const getQuery = 'SELECT * FROM all_repositories WHERE id = $1';
|
||||||
const getResult = await database.query(getQuery, [id]);
|
const getResult = await database.query(getQuery, [id]);
|
||||||
|
|
||||||
if (getResult.rows.length === 0) {
|
if (getResult.rows.length === 0) {
|
||||||
@ -1184,7 +1185,7 @@ router.delete('/repository/:id', async (req, res) => {
|
|||||||
|
|
||||||
// Delete repository record
|
// Delete repository record
|
||||||
await database.query(
|
await database.query(
|
||||||
'DELETE FROM github_repositories WHERE id = $1',
|
'DELETE FROM all_repositories WHERE id = $1',
|
||||||
[id]
|
[id]
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -1214,7 +1215,7 @@ router.get('/user/:user_id/repositories', async (req, res) => {
|
|||||||
const query = `
|
const query = `
|
||||||
SELECT gr.*, rs.local_path, rs.storage_status, rs.total_files_count,
|
SELECT gr.*, rs.local_path, rs.storage_status, rs.total_files_count,
|
||||||
rs.total_directories_count, rs.total_size_bytes, rs.download_completed_at
|
rs.total_directories_count, rs.total_size_bytes, rs.download_completed_at
|
||||||
FROM github_repositories gr
|
FROM all_repositories gr
|
||||||
LEFT JOIN repository_storage rs ON gr.id = rs.repository_id
|
LEFT JOIN repository_storage rs ON gr.id = rs.repository_id
|
||||||
WHERE gr.user_id = $1
|
WHERE gr.user_id = $1
|
||||||
ORDER BY gr.created_at DESC
|
ORDER BY gr.created_at DESC
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user