- Migrated from Python pre-commit to NodeJS-native solution - Reorganized documentation structure - Set up Husky + lint-staged for efficient pre-commit hooks - Fixed Dockerfile healthcheck issue - Added comprehensive documentation index
108 lines
4.1 KiB
YAML
108 lines
4.1 KiB
YAML
apiVersion: batch/v1
|
|
kind: Job
|
|
metadata:
|
|
name: db-seed
|
|
labels:
|
|
app: rxminder
|
|
component: database
|
|
spec:
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: rxminder
|
|
component: database
|
|
spec:
|
|
containers:
|
|
- name: db-seeder
|
|
image: couchdb:3.3.2
|
|
env:
|
|
- name: COUCHDB_USER
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: couchdb-secret
|
|
key: username
|
|
- name: COUCHDB_PASSWORD
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: couchdb-secret
|
|
key: password
|
|
command: ['/bin/sh', '-c']
|
|
args:
|
|
- |
|
|
# Wait for CouchDB to be ready
|
|
echo "Waiting for CouchDB to be ready..."
|
|
until curl -f http://couchdb-service:5984/_up 2>/dev/null; do
|
|
sleep 2
|
|
done
|
|
|
|
# Create databases
|
|
echo "Creating databases..."
|
|
curl -X PUT http://$COUCHDB_USER:$COUCHDB_PASSWORD@couchdb-service:5984/meds_app
|
|
|
|
# Create default admin user
|
|
echo "Creating default admin user..."
|
|
curl -X PUT http://$COUCHDB_USER:$COUCHDB_PASSWORD@couchdb-service:5984/_users/org.couchdb.user:$COUCHDB_USER \
|
|
-H "Content-Type: application/json" \
|
|
-d "{
|
|
\"name\": \"$COUCHDB_USER\",
|
|
\"password\": \"$COUCHDB_PASSWORD\",
|
|
\"roles\": [\"admin\"],
|
|
\"type\": \"user\"
|
|
}"
|
|
|
|
# Create design documents for views
|
|
echo "Creating design documents..."
|
|
curl -X PUT http://$COUCHDB_USER:$COUCHDB_PASSWORD@couchdb-service:5984/meds_app/_design/medications \
|
|
-H "Content-Type: application/json" \
|
|
-d '{
|
|
"views": {
|
|
"by_name": {
|
|
"map": "function(doc) { if (doc.type === \"medication\") emit(doc.name, doc); }"
|
|
},
|
|
"by_user": {
|
|
"map": "function(doc) { if (doc.type === \"medication\") emit(doc.userId, doc); }"
|
|
}
|
|
}
|
|
}'
|
|
|
|
curl -X PUT http://$COUCHDB_USER:$COUCHDB_PASSWORD@couchdb-service:5984/meds_app/_design/reminders \
|
|
-H "Content-Type: application/json" \
|
|
-d '{
|
|
"views": {
|
|
"by_medication": {
|
|
"map": "function(doc) { if (doc.type === \"reminder\") emit(doc.medicationId, doc); }"
|
|
},
|
|
"by_user": {
|
|
"map": "function(doc) { if (doc.type === \"reminder\") emit(doc.userId, doc); }"
|
|
}
|
|
}
|
|
}'
|
|
|
|
# Create a sample user document for reference
|
|
# Create design document for authentication users
|
|
curl -X PUT http://$COUCHDB_USER:$COUCHDB_PASSWORD@couchdb-service:5984/meds_app/_design/auth \
|
|
-H "Content-Type: application/json" \
|
|
-d '{
|
|
"views": {
|
|
"by_username": {
|
|
"map": "function(doc) { if (doc.type === \"user\" && doc.username) emit(doc.username, doc); }"
|
|
},
|
|
"by_email": {
|
|
"map": "function(doc) { if (doc.type === \"user\" && doc.email) emit(doc.email, doc); }"
|
|
}
|
|
}
|
|
}'
|
|
echo "Creating sample user document..."
|
|
curl -X POST http://$COUCHDB_USER:$COUCHDB_PASSWORD@couchdb-service:5984/meds_app \
|
|
-H "Content-Type: application/json" \
|
|
-d '{
|
|
"type": "user",
|
|
"name": "sample_user",
|
|
"email": "user@example.com",
|
|
"createdAt": "'$(date -u +%Y-%m-%dT%H:%M:%SZ)'"
|
|
}'
|
|
|
|
echo "Database seeding completed with default admin user"
|
|
restartPolicy: Never
|
|
backoffLimit: 4
|