Initial commit: Complete NodeJS-native setup
- 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
This commit is contained in:
107
k8s/db-seed-job.yaml
Normal file
107
k8s/db-seed-job.yaml
Normal file
@@ -0,0 +1,107 @@
|
||||
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
|
||||
Reference in New Issue
Block a user