From 5dc46f70873ebe13a3405b446148a7850aff111a Mon Sep 17 00:00:00 2001 From: Francisco Sandoval Date: Tue, 13 Jun 2023 21:57:23 -0400 Subject: [PATCH] se agrega endpoint que consulta db mongo --- .env.develop | 4 +++- docker/docker-compose.yml | 12 ++++++++++++ project/api/mongo.py | 21 +++++++++++++++++++++ project/api/urls.py | 2 ++ project/api/views.py | 1 - readme.md | 1 + requirements.txt | 3 ++- 7 files changed, 41 insertions(+), 3 deletions(-) create mode 100644 project/api/mongo.py diff --git a/.env.develop b/.env.develop index 4c7dde2..1fa9cc2 100644 --- a/.env.develop +++ b/.env.develop @@ -4,4 +4,6 @@ DBNAME=database DBUSER=postgres DBPASS=password DBSCHEMA=desarrollo1 -SECRET_JWT="mB&2CH0fy7#Zb4T%o661eFn5" \ No newline at end of file +SECRET_JWT="mB&2CH0fy7#Zb4T%o661eFn5" +MONGO_HOST="mongodb://root:password@dbmongo:27017" +MONGO_DB=auditoria \ No newline at end of file diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index cc783e4..f43a03a 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -37,5 +37,17 @@ services: ADMINER_DEFAULT_PASSWORD: password ADMINER_DESIGN: lucas-sandery + dbmongo: + image: mongo:4.2.24-bionic + restart: unless-stopped + ports: + - 27017:27017 + volumes: + - mongo:/data/db + environment: + MONGO_INITDB_ROOT_USERNAME: root + MONGO_INITDB_ROOT_PASSWORD: password + volumes: db: + mongo: diff --git a/project/api/mongo.py b/project/api/mongo.py new file mode 100644 index 0000000..fcf9c2d --- /dev/null +++ b/project/api/mongo.py @@ -0,0 +1,21 @@ + +from decouple import config +from django.http import JsonResponse +from rest_framework.response import Response +import pymongo + +connection_string = config('MONGO_HOST'); +client = pymongo.MongoClient(connection_string) +dbname = client[config('MONGO_DB')] + +def prueba_mongo(request): + collection_name = dbname['productos'] + productos = collection_name.find({}) + data = [] + for r in productos: + data.append({ + 'id': str(r['_id']), + 'codigo': r['codigo'], + 'nombre': r['nombre'], + }) + return JsonResponse(data, safe=False) diff --git a/project/api/urls.py b/project/api/urls.py index f5c7e9c..ea363ce 100644 --- a/project/api/urls.py +++ b/project/api/urls.py @@ -1,6 +1,7 @@ from django.urls import path, include from rest_framework import routers from api import views +from .mongo import prueba_mongo router = routers.DefaultRouter() router.register(r'projects', views.ProjectViewSet) @@ -11,4 +12,5 @@ router.register(r'auth', views.AuthViewSet, basename='auth') urlpatterns = [ path('', include(router.urls)), + path(r'productos-mongo/', prueba_mongo), ] \ No newline at end of file diff --git a/project/api/views.py b/project/api/views.py index b918cda..62666af 100644 --- a/project/api/views.py +++ b/project/api/views.py @@ -1,5 +1,4 @@ # models -from http.client import HTTPResponse from django.contrib.auth.models import User from .models import Project, Agency, Route # serializers diff --git a/readme.md b/readme.md index 86c5fa1..a5c0fa0 100644 --- a/readme.md +++ b/readme.md @@ -8,6 +8,7 @@ * **coreapi**: genera documentación de rest api * **python-decouple**: lee archivo .env para variables de ambiente * **PyJWT**: permite generar json-web-token +* **pymongo**: permite conectarse a base datos mongo # Docker diff --git a/requirements.txt b/requirements.txt index 03c9d6c..c0b6259 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,4 +4,5 @@ djangorestframework django-cors-headers coreapi python-decouple -PyJWT \ No newline at end of file +PyJWT +pymongo \ No newline at end of file