Prisma સાથે પ્રોજેક્ટ મેનેજમેન્ટ ટૂલ બનાવવું

હું Trello જેવું સહયોગી (collaborative) પ્રોજેક્ટ મેનેજમેન્ટ ટૂલ બનાવી રહ્યો છું.

હું React, Express.js, PostgreSQL, અને Socket.io નો ઉપયોગ કરી રહ્યો છું. કોઈપણ બેકએન્ડ રૂટ્સ લખતા પહેલા, મારે ડેટાબેઝ સ્કીમા ડિઝાઇન કરવો પડશે.

સ્કીમા એ પાયો છે. જો સ્કીમા ખોટો હોય, તો આખું એપ નિષ્ફળ જાય છે. અહીં Prisma સ્કીમા ડિઝાઇનનું મારું વિભાજન છે.

મોડલ્સ

• User: નામ, ઈમેલ અને પાસવર્ડ સ્ટોર કરે છે. હું ID માટે cuid() નો ઉપયોગ કરું છું. આ લાંબી, યુનિક સ્ટ્રિંગ્સ બનાવે છે. તે નંબર્સ કરતા વધુ સારું છે કારણ કે તે URL માં તમારા યુઝર કાઉન્ટને લીક કરતું નથી.

• Project: પ્રોજેક્ટનું નામ અને વર્ણન (description) ધરાવે છે. મેં પ્રશ્નચિહ્ન (?) નો ઉપયોગ કરીને વર્ણનને વૈકલ્પિક (optional) બનાવ્યું છે.

• ProjectMember: આ એક જંકશન ટેબલ (junction table) છે. તે Users ને Projects સાથે જોડે છે. એક યુઝર ઘણા પ્રોજેક્ટ્સમાં જોડાઈ શકે છે અને એક પ્રોજેક્ટમાં ઘણા યુઝર્સ હોઈ શકે છે, તેથી many-to-many રિલેશનશિપ મેનેજ કરવા માટે તમારે આ મધ્યમ ટેબલની જરૂર છે. મેં એક યુઝર એક જ પ્રોજેક્ટમાં બે વાર ન જોડાઈ શકે તે માટે યુનિક કન્સ્ટ્રેઈન્ટ (unique constraint) ઉમેરી છે.

• Board: Tasks બોર્ડની અંદર હોય છે. બોર્ડ પ્રોજેક્ટ્સની અંદર હોય છે. આ હાયરાર્કી ડ્રેગ-એન્ડ-ડ્રોપને સરળ બનાવે છે. કોલમ વચ્ચે ટાસ્ક ખસેડવો એ માત્ર એક સિંગલ ફીલ્ડ અપડેટ છે.

• Task: આ મુખ્ય મોડલ છે. તેમાં User મોડલ સાથે બે અલગ રિલેશન છે:

• Comment: યુઝર્સ ટાસ્ક પર કોમેન્ટ કરી શકે છે. કોડ વાંચવામાં સરળ રહે તે માટે મેં રિલેશનનું નામ "user" ને બદલે "author" રાખ્યું છે.

• Notification: યુઝર્સ માટે મેસેજ ટ્રેક કરવા માટેનું એક સાદું મોડલ.

શીખેલા ટેકનિકલ પાઠ

આ બનાવતી વખતે મને ઘણી ભૂલોનો સામનો કરવો પડ્યો હતો. આ બાબતોનું ધ્યાન રાખજો:

સ્કીમા હવે માઈગ્રેટ થઈ ગઈ છે. હવે, હું રિયલ-ટાઇમ અપડેટ્સ માટે Express બેકએન્ડ અને Socket.io સેટઅપ બનાવીશ.

સ્ત્રોત: https://dev.to/chinwuba_jeffrey/building-a-project-management-tool-from-scratch-starting-with-the-prisma-schema-161