From 91fc6900ebbc5fe1f5bc931c2b80c4c039b6c71f Mon Sep 17 00:00:00 2001 From: juanjo <130799031+juanminguezsanz2023@users.noreply.github.com> Date: Thu, 16 Apr 2026 16:32:50 +0200 Subject: [PATCH] refactor: mover BD SQLite a carpeta data/ MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Mover db.sqlite3 de raíz a data/db.sqlite3 - Actualizar settings.py: fallback SQLite a data/ cuando DB_HOST no está definido - Actualizar .gitignore: ignorar data/* pero mantener data/.gitkeep - Actualizar init_db.py: mensaje apunta a data/db.sqlite3 - Añadir data/.gitkeep para anclar la carpeta en git Co-Authored-By: Claude Sonnet 4.6 --- .gitignore | 4 ++++ app/api_config/settings.py | 29 +++++++++++++++++++---------- data/.gitkeep | 0 db.sqlite3 | Bin 155648 -> 0 bytes init_db.py | 2 +- 5 files changed, 24 insertions(+), 11 deletions(-) create mode 100644 data/.gitkeep delete mode 100644 db.sqlite3 diff --git a/.gitignore b/.gitignore index 77ce346..53dade1 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,10 @@ deployments/docker-compose.yml # Archivos de datos de la DB local postgres_data/ local_postgres_data/ + +# Carpeta de datos (BD SQLite y similares), pero se mantiene la carpeta +data/* +!data/.gitkeep *.pyc # Bloquear todos los .env en cualquier carpeta .env diff --git a/app/api_config/settings.py b/app/api_config/settings.py index c11de02..c92f0fb 100644 --- a/app/api_config/settings.py +++ b/app/api_config/settings.py @@ -93,17 +93,26 @@ TEMPLATES = [ WSGI_APPLICATION = 'api_config.wsgi.application' # 3. DATABASE -# Extraemos con fallback por si el .env falla -DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.postgresql', - 'NAME': os.getenv('DB_NAME', 'postgres'), - 'USER': os.getenv('DB_USER', 'postgres'), - 'PASSWORD': os.getenv('DB_PASSWORD', ''), - 'HOST': os.getenv('DB_HOST', 'localhost'), - 'PORT': os.getenv('DB_PORT', '5432'), +# En producción (cuando DB_HOST está definido) usa PostgreSQL. +# En local/desarrollo sin configuración, cae a SQLite en data/ +if os.getenv('DB_HOST'): + DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.postgresql', + 'NAME': os.getenv('DB_NAME', 'postgres'), + 'USER': os.getenv('DB_USER', 'postgres'), + 'PASSWORD': os.getenv('DB_PASSWORD', ''), + 'HOST': os.getenv('DB_HOST'), + 'PORT': os.getenv('DB_PORT', '5432'), + } + } +else: + DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.sqlite3', + 'NAME': BASE_DIR / 'data' / 'db.sqlite3', + } } -} # Internationalization LANGUAGE_CODE = 'es-es' diff --git a/data/.gitkeep b/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/db.sqlite3 b/db.sqlite3 deleted file mode 100644 index e3b2ea187a2b04c9f8cc53b0cda5ad9532339f2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 155648 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�LaG00ck)1V8`;KmY_l00ck)1m24T&e<)d zfzG6y+EQ}qgq+T*xlDfDWwV&Nd*to%MmbLsSWqbDclXY=kpx$L!g;I3)Ynatv-y;o z&ncza*Unap>GH*rQYw-7lJ@gri^bI6m&)hL#Bq7App*>XJ1iDcR~PlaT~dk;Gr3}S zTQBCf3ujM}OQx!z6tgPxdWN%@T$ii5iO1p|ef~F{elJ!g$_xS^00JNY0w4eaAOHd& z00JNY0`DCHIRF3NscV!J1V8`;KmY_l00ck)1V8`;K;XSg0MGyL-MUA~K>!3m00ck) z1V8`;KmY_l00iDU1nBvHj{ky*{KE$XKmY_l00ck)1V8`;KmY_l00cnb86$9$v%EHD z6T)dl6urrm7)}RM{&YxDf??m9B8!p~N(BUOT2O>=z%L47U|8@CdnLCwJnEB1rNBtY z7xqg*`u?BeziuM`@Bsl3009sH0T2KI5C8!X009sH0T4Jr1cuD79eZb>^8Ei36aSMF zR6s}t0T2KI5C8!X009sH0T2KI5C8!XI5q*Z*=D2X|Jy9zGVx-^@7gW4iMBUe-f2mb z2z)>Q1VG^A5;$mWbC}v(ZKhZHJN;c_W9;vqyxyy(dq>^gm)yN_s;u76lZ$e3Tlw(o zy{Y_mu1wQDEDA#H&$1|`>-i-4>nlp}`rVoN1;a@yQ5Y4aQPDRN3i%`{+$<&R6@mfr zpw;?Q5aRWX2tL0kc@GJpDIsrI^uBej)yas+AN6+j=t$_FkIBhdg%rM*QR*dl3UaBm zlP^+QS|njqRMv`0X@kZod$%`|lPPsZy*;(KKjn?7Q>CfgoIf=_6`0y8tSpV+4v!Ec zAt{zK$xK*KR&HdbHuGvKyObsW?aSjNLw3nWGej3sQfxEgpP7hAGxIyDynIt2w!5+Y zlo(xz(4YS4@!R*(lUwA5Q#;Z9ly_z!v$47v-HmRp3(?7?t(nRAPHZ!?5uKdcC-yt> zg^kVV9u>8;zq)dJOLIpvdCrCGEeX)flb#)?>C8gY2-JIKsF0882<(r#P@%BbkjPA!KXGy-r zU3!o7N-UGggbS;*IyNKf+U!VhV`_f(?v3pm`^!;pWML`0H@|T^Gc_?2Qn#13@7$2@ zPYAo&`*(6XDOzaSD)h=H5v8(R-ewd^+Z7JN>CeIjX>4b76I zgh{jXg+jrDms?o>=y~NA^^WQdiX-08h%n-PNS9TL#XQqEliXBNWp{qfP5(%eJ1v(L zw_0-N@@4n!`I(rT6h)OY>b{)JD7_!{AGd##!;(^P#21jfqzw8QO49SSl(69S2M%7g zJgfQxqe5^b5C}@)hVjW;NeK&~K=`e5=4X6ZAl-RC)?`?S?nk})uyA`bMmovr!j?b2 z92LkAAw(CVJ2T5SNrzeAiHmV>bbligoxGhrYFG#h3%==l_r~t+F5R5JwZ1krGwaK4 zOy61$B{p;W`%`o4n>We}h3Ir-@&A8V*o|$n(lrhX`_cVHeOSmwr8pTX;>+>f_%b7~ zznYEsR+pDD@#V-~Or*mI@sy2-M+^(3Sh4jR`-(WXyCzD$`S^yUOy3NS%?EZz!&CYBwbK5?STUVWE|yoyd-18zT5k5I&@4%(qor$XmSj$j7@FmrI{Ulot>ra z{k84c;8^}xm;9}+hh(K(AJ&_ qHp3=1cghL6Y|ZBe*ev$2xmO5}ilLF9KNKXZ!n)FEDWO0}2>l-_t~e+F diff --git a/init_db.py b/init_db.py index 3738b4d..545f943 100644 --- a/init_db.py +++ b/init_db.py @@ -29,4 +29,4 @@ with connection.cursor() as cursor: VALUES (1, 'Categoria Test') """) connection.commit() -print('Tablas y datos de prueba creados exitosamente en db.sqlite3') \ No newline at end of file +print('Tablas y datos de prueba creados exitosamente en data/db.sqlite3') \ No newline at end of file -- 2.49.1