feat: Initialize new batch insertion service with Express, Docker, and Boltic deployment configuration.

This commit is contained in:
Raunak Singh 2026-03-08 16:39:38 +05:30
commit 227b3e67c9
6 changed files with 2511 additions and 0 deletions

22
.gitignore vendored Normal file
View File

@ -0,0 +1,22 @@
# Dependencies
node_modules/
npm-debug.log*
# Environment files
.env
.env.local
.env.*.local
# Google Cloud
.gcloudignore
# IDE
.vscode/
.idea/
# OS
.DS_Store
Thumbs.db
# Logs
*.log

5
Dockerfile Normal file
View File

@ -0,0 +1,5 @@
FROM node:18-alpine
EXPOSE 8080
COPY . .
RUN npm install
CMD ["npm", "start"]

10
boltic.yaml Normal file
View File

@ -0,0 +1,10 @@
app: batchinsertion
region: asia-south1
entrypoint: "index.js"
build:
builtin: dockerfile
ignorefile: .gitignore
env:
PORT: '8080'

44
index.js Normal file
View File

@ -0,0 +1,44 @@
import express from 'express';
import dotenv from 'dotenv';
import { batchInsert } from './batchInsertCall.js';
const app = express();
// Middleware to parse JSON bodies
app.use(express.json());
dotenv.config({ path: '.env' });
// Health check endpoint
app.get('/', (req, res) => {
res.json({
status: 'OK',
message: 'Batch insert Service is running',
endpoints: {
export: 'POST /batch-insert - Batch insert data to BQ'
}
});
});
app.post('/batch-insert', async (req, res) => {
try {
const result = await batchInsert(req, res);
res.status(200).json(result);
} catch (error) {
console.error('Export endpoint error:', error);
res.status(500).json({
success: false,
error: error.message
});
}
});
const PORT = process.env.PORT || 8080;
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}`);
});
// For serverless functions (like Google Cloud Functions)
export default app;

2406
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

24
package.json Normal file
View File

@ -0,0 +1,24 @@
{
"type": "module",
"name": "batchinsertion",
"version": "1.0.0",
"description": "BigQuery export serverless function",
"main": "index.js",
"scripts": {
"start": "node index.js",
"dev": "LOCAL_DEV=falsetrue nodemon index.js"
},
"engines": {
"node": ">=18.0.0"
},
"dependencies": {
"@google-cloud/bigquery": "^6.0.0",
"@google-cloud/storage": "^7.16.0",
"axios": "^1.11.0",
"dotenv": "^17.2.1",
"express": "^4.21.2"
},
"devDependencies": {
"nodemon": "^3.1.10"
}
}