Saltatu eduki nagusira

Supabase eskema

Supabase aplikazioaren backend nagusi gisa jokatzen du. Azpiko datu-basea PostgreSQL da. Taula bakoitza, bere zutabeak eta haien arteko erlazioak deskribatzen dira jarraian.

Taula: erabiltzaileak​

Aplikazioan erregistratutako erabiltzaileen datuak gordetzen ditu.

ZutabeaMotaMurrizketakDeskribapena
idintegerPK, gehikuntza automatikoaErabiltzaile-identifikatzaile bakarra
nombrevarchar(100)EZ NULLErabiltzailearen izen osoa
dnivarchar(20)BAKARRANortasun Agiri Nazionala. Saioa hasteko identifikatzaile gisa erabiltzen da
contraseniaHashvarchar(255)Biltegiratutako pasahitza (testu arrunta oraingo bertsioan)
emailvarchar(100)BAKARRAPosta elektronikoa. Pasahitza berreskuratzeko erabiltzen da
telefonovarchar(20)Harremanetarako telefono zenbakia
adminintegerLEHENESTASUNA 0Erabiltzaileak administratzaile rola duen adierazten du (0 = erabiltzailea, 1 = administratzailea)
premiumbooleanLEHENESTASUNA faltsuaErabiltzaileak Premium harpidetza aktiboa duen adierazten du
fecha_ini_premdatePremium harpidetza hasiera data
fecha_fin_premdatePremium harpidetzaren amaiera-data
fototextBase64 kodetutako profileko irudia

Dagokion datu-klasea models/Usuario.kt da.

Taula: makinak​

Gimnasioko makinen katalogoa gordetzen du.

ZutabeaMotaMurrizketakDeskribapena
idintegerPK, gehikuntza automatikoaMakina-identifikatzaile bakarra
nombrevarchar(100)EZ NULLMakinaren izen atsegina
tipovarchar(50)Ariketa kategoria (Cardio, Bizkarra, Hanka, Bularra, etab.)
estadointegerLEHENESTASUNA 0Egoera-eremu generikoa
descripciontextMakinaren deskribapen zehatza
operativabooleanLEHENESTASUNA egiaMakina erreserbak egiteko erabilgarri dagoen adierazten du
mantenimiento_desdevarcharMantentze-aldia hasierako data eta ordua (yyyy-MM-dd HH:mm)
mantenimiento_hastavarcharMantentze-aldiaren amaiera-data eta ordua (yyyy-MM-dd HH:mm)

Dagokion datu-klasea models/Maquina.kt da.

Taula: erreserbak​

Erabiltzaileek egindako makineriaren erreserbak gordetzen ditu.

ZutabeaMotaMurrizketakDeskribapena
idintegerPK, gehikuntza automatikoaErreserbaren identifikatzaile bakarra
id_usuariointegerFK → erabiltzaileak.idErreserba egin duen erabiltzailea
id_maquinaintegerFK → makinak.idErreserbatutako makina
fechadateErreserba data (yyyy-MM-dd)
hora_iniciotimeErreserbatutako zirrikituaren hasiera-ordua
hora_fintimeErreserbatutako zirrikituaren amaiera-ordua
estadobooleanLEHENESTASUNA egiatrue = aktibo, false = bertan behera

Dagozkion datu-klaseak models/Reserva.kt eta models/ReservaConDetalles.kt dira. Bigarrenak Usuario eta Maquina objektu txertatuak barne hartzen ditu, PostgREST erlazio sintaxiaren bidez lortuak (*, usuarios(*), maquinas(*)).

Mahaia: platerak​

Gorde katalogoko nutrizio-platerak.

ZutabeaMotaMurrizketakDeskribapena
idintegerPK, gehikuntza automatikoaPlateraren identifikatzaile bakarra
id_usuariointegerFK → erabiltzaileak.idPlatera iradoki duen erabiltzailea (sistemako plateretarako baliogabea)
nombrevarchar(100)EZ NULLPlateraren izena
descripciontextPlateraren deskribapena edo errezeta
caloriasdouble precisionAnoi bakoitzeko kaloria edukia
imagen_urlvarchar(255)Irudiaren URLa edo plakaren irudiaren Base64 katea
fecha_subidatimestampErregistroa sortzeko data eta ordua
visibilidadbooleanLEHENESTASUNA egiaPlatera katalogoan ikusgai dagoen adierazten du
tiempovarcharAurreikusitako prestaketa denbora (adibidez, "30 minutu")
aceptadobooleanLEHENESTASUNA faltsuaPlatera administratzaile batek onartu duen adierazten du

Dagokion datu-klasea models/Plato.kt da.

Taula: user_weight​

Erabiltzaile bakoitzaren pisu-erregistroen historia gordetzen du.

ZutabeaMotaMurrizketakDeskribapena
idintegerPK, gehikuntza automatikoaErregistroaren identifikatzaile bakarra
id_usuariointegerFK → erabiltzaileak.idErregistroa nori dagokion erabiltzailea
pesodouble precisionEZ NULLPisua kilogramotan
fechadateIzena emateko data (yyyy-MM-dd)

Aplikazioak eguneko erregistro bakarraren muga ezartzen du UI mailan. Pantailak uneko datarako erregistrorik dagoen ala ez egiaztatzen du, berri bat gehitzeko baimena eman aurretik.

Dagokion datu-klasea models/PesoUsuario.kt da.

Taula: ordainketak​

Premium harpidetza-transakzioen historia gordetzen du.

ZutabeaMotaMurrizketakDeskribapena
idintegerPK, gehikuntza automatikoaOrdainketa-identifikatzaile bakarra
id_usuariointegerFK → erabiltzaileak.idOrdainketa egin duen erabiltzailea
montodouble precisionEZ NULLEragiketaren zenbatekoa eurotan
fecha_pagodateOrdainketa egin zen data
tipovarchar(50)Harpidetza modua (Hilerokoa, Semiurtekoa, Urtekoa)
metodo_pagovarchar(25)Erabilitako ordainketa-metodoa (Txartela, Bizum)

Dagokion datu-klasea models/Pago.kt da.

Erlazio diagrama​

usuarios (id)
|
|--< reservas (id_usuario) >-- maquinas (id)
|
|--< peso_usuario (id_usuario)
|
|--< platos (id_usuario)
|
|--< pagos (id_usuario)

Harremanak denak bat-asko dira. Supabase Arbel mailan ez da atzerriko gako espliziturik definitzen; Erreferentziazko osotasuna aplikazio mailan kudeatzen da.

Errenkada-mailako segurtasuna​

Supabase Row Level Security (RLS) gidalerroak ez daude konfiguratuta bertsio honetan. Datuetarako sarbidea anon keyrekin egiten da, beraz, gakoa duen edozein bezerok taula guztietan irakurri eta idatzi dezake. Produkzio-ingurune batean ezinbestekoa izango litzateke RLS politika egokiak definitzea edo service_role key fidagarriko backend batetik soilik erabiltzea.

Datu-basearen konstanteak​

Taulen eta zutabeen izenak DbConstants.kt DbTables eta DbColumns objektuen bidez zentralizatzen dira, kodean zehar sakabanatuta dauden kate literalak erabiltzea saihestuz:

object DbTables {
const val USUARIOS = "usuarios"
const val MAQUINAS = "maquinas"
const val PLATOS = "platos"
const val PAGOS = "pagos"
const val RESERVAS = "reservas"
const val PESO_USUARIO = "peso_usuario"
}

object DbColumns {
const val ID = "id"
const val DNI = "dni"
const val NOMBRE = "nombre"
// ...
}