Giter Site home page Giter Site logo

nerdify / db-schema-diagram Goto Github PK

View Code? Open in Web Editor NEW
58.0 5.0 29.0 1.19 MB

Attempt to create a opensource alternative to dbdiagram.io. Including DSL parser and Diagram Viewer

Home Page: https://clever-johnson-061743.netlify.app

License: MIT License

HTML 0.16% CSS 96.80% JavaScript 3.04%

db-schema-diagram's Introduction

DBScheme Parser [beta]

dbdiagram.io is an awesome tool, in nerdify we use it a lot. But sometime we wish to have a light open source alternative.

Goals

  1. Create a parser with fully sintax fully compatible con dbdiagram.io [check milestone #1]
  2. Develop a light component to render ER diagrams

Sintax

You can try a demo here: here

enum status {
  open
  closed
}

Table categories {
  id integer [primary key]
  name varchar
}

Table products {
  id integer [primary key]
  category_id integer
  name varchar
}

Ref: products.category_id > categories.id

Will result

Screenshot-20200519002039-972x516

db-schema-diagram's People

Contributors

claushellsing avatar hosmelq avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

db-schema-diagram's Issues

Backend graphQL server, code available?

I cloned this project and ran the command: yarn start
However, when I navigate the link, it seems the backend is missing (amazon aws link).
Is the backend code for this project provided?

Regards

App crash when there is empty references

Table users { id int } Table stores { id int } Table products { id int store_id int user_id int } Ref: productxs.user_id > users.id Ref: products.store_id > stores.id

Unhandled Rejection (Error): Network error: Response not successful: Received status code 401

ร—
Unhandled Rejection (Error): Network error: Response not successful: Received status code 401
new ApolloError
http://localhost:3000/static/js/0.chunk.js:38618:24
38615 | errorMessage = _a.errorMessage,
38616 | extraInfo = _a.extraInfo;
38617 |

38618 | var _this = _super.call(this, errorMessage) || this;
| ^ 38619 |
38620 | _this.graphQLErrors = graphQLErrors || [];
38621 | _this.networkError = networkError || null;
View source
error
src/core/QueryManager.ts:255
252 | });
253 | self.broadcastQueries();
254 | self.setQuery(mutationId, () => ({ document: null }));
255 | reject(
| ^ 256 | new ApolloError({
257 | networkError: err,
258 | }),

parsing error on big schema

First i would like to thank you for you effert and making this open sourse. I liked it very much. I'm planning to make something different but similar and i found this amazing repo.

i get parsing error when parsing this big schema
Error: sad sad panda, Parsing errors detected
n App.js:119
m App.js:293
current useDebouncedCallback.js:47

          Table Account {
          id Int [pk, increment]
          userId Int [not null]
          type String [not null]
          provider String [not null]
          providerAccountId String [not null]
          refresh_token String
          access_token String
          expires_at Int
          token_type String
          scope String
          id_token String
          session_state String
          user User [not null]
        
          indexes {
            (provider, providerAccountId) [unique]
          }
        }
        
        Table Session {
          id Int [pk, increment]
          sessionToken String [unique, not null]
          userId Int [not null]
          expires DateTime [not null]
          user User [not null]
        }
        
        Table User {
          id Int [pk, increment]
          name String
          nameAr String
          emailVerified DateTime
          role Role [not null]
          nationality Country
          email String [unique, not null]
          image String
          mobileNumber String
          gender Gender
          twitter String
          linkedIn String
          balance Decimal [not null, default: 0]
          inviter User
          specialty Specialty
          profession Profession
          scfhs String
          city City
          state State
          country Country
          accounts Account [not null]
          sessions Session [not null]
          traineeEvents TraineeEvent [not null]
          invitedUsers User [not null]
          memberNeeds MemberNeeds [not null]
          bankAccount BankAccount
          trainerCv Cv
          nameOnCommercialRecord String
          addedEvents Event [not null]
          commercialRecord String
          logoUrl String
          cvId Int
          inviterId Int
          specialtyId Int
          rankId Int
          roleId Int [not null, default: 3]
          professionId Int
          cityId Int
          stateId Int
          countryId Int
          nationalityId Int
          transitionsFirstParty Transition [not null]
          transitionsSecondParty Transition [not null]
          events Event [not null]
          remindMeEvents Event [not null]
          traineeEventInvites TraineeEvent [not null]
          trainerEvents TrainerEvent [not null]
          trainereventDayTimeSlots TrainerEventDayTimeSlot [not null]
          coupons Coupon [not null]
          createdAt DateTime [default: `now()`]
          deletedAt DateTime
          leaderEventGroups TraineeEventGroup [not null]
        }
        
        Table VerificationToken {
          identifier String [not null]
          token String [unique, not null]
          expires DateTime [not null]
        
          indexes {
            (identifier, token) [unique]
          }
        }
        
        Table Qualification {
          id Int [pk, increment]
          title String [unique, not null]
          createdAt DateTime [default: `now()`]
          deletedAt DateTime
          Education Education [not null]
        }
        
        Table Specialty {
          id Int [pk, increment]
          titleEn String [not null]
          titleAr String
          profession Profession [not null]
          coupons Coupon [not null]
          users User [not null]
          createdAt DateTime [default: `now()`]
          deletedAt DateTime
          professionId Int [not null]
          Education Education [not null]
        }
        
        Table Rank {
          id Int [pk, increment]
          title String [unique, not null]
          createdAt DateTime [default: `now()`]
          deletedAt DateTime
          Cv Cv [not null]
        }
        
        Table Role {
          id Int [pk, increment]
          titleAr String [unique, not null]
          titleEn String [unique, not null]
          users User [not null]
          createdAt DateTime [default: `now()`]
          deletedAt DateTime
        }
        
        Table Country {
          id Int [pk, increment]
          name String [unique, not null]
          states State [not null]
          cities City [not null]
          users User [not null]
          usersNationality User [not null]
          createdAt DateTime [default: `now()`]
          deletedAt DateTime
        }
        
        Table State {
          id Int [pk, increment]
          name String [not null]
          country Country
          countryId Int
          cities City [not null]
          users User [not null]
          createdAt DateTime [default: `now()`]
          deletedAt DateTime
        }
        
        Table City {
          id Int [pk, increment]
          name String [not null]
          latitude Decimal
          longitude Decimal
          states State
          country Country
          stateId Int
          countryId Int
          events Event [not null]
          users User [not null]
          createdAt DateTime [default: `now()`]
          deletedAt DateTime
        }
        
        Table Profession {
          id Int [pk, increment]
          sortOrder Int
          titleEn String [unique, not null]
          titleAr String
          users User [not null]
          createdAt DateTime [default: `now()`]
          deletedAt DateTime
          Specialties Specialty [not null]
          trainerEvents TrainerEvent [not null]
          Events Event [not null]
          pricingPlans PricingPlanSpecialtyPrice [not null]
          Education Education [not null]
        }
        
        Table MemberNeeds {
          id Int [pk, increment]
          courseTitle String [not null]
          information String
          objectives String
          user User
          userId Int
          createdAt DateTime [default: `now()`]
          deletedAt DateTime
        }
        
        Table BankAccount {
          id Int [pk, increment]
          iban String [not null]
          accountHolderName String
          bankName String
          user User [not null]
          userId Int [unique, not null]
          createdAt DateTime [default: `now()`]
          deletedAt DateTime
        }
        
        Table Transition {
          id Int [pk, increment]
          firstPartyOpeningBalance Decimal [not null]
          secondPartyOpeningBalance Decimal
          firstPartyClosingBalance Decimal [not null]
          secondPartyClosingBalance Decimal
          amount Decimal [not null]
          tax Decimal [not null]
          bankTransferReceipt String
          description String [not null]
          isRefund Boolean [not null]
          isRefunded Boolean [not null]
          transitionType TransitionType [not null]
          paymentWay PaymentWay [not null]
          firstParty User [not null]
          secondParty User
          status TransitionStatusType [not null]
          fullAmount Decimal [not null]
          transitionTypeId Int [not null]
          firstPartyUserId Int [not null]
          secondPartyUserId Int
          transitionStatusTypeId Int [not null]
          traineeEvents TraineeEvent [not null]
          traineeEventGroups TraineeEventGroup [not null]
          trainerEvents TrainerEvent [not null]
          createdAt DateTime [default: `now()`]
          paymentWayId Int [not null]
        }
        
        Table TransitionType {
          id Int [pk, increment]
          titleEn String [unique, not null]
          titleAr String [unique, not null]
          transitions Transition [not null]
          createdAt DateTime [default: `now()`]
          deletedAt DateTime
        }
        
        Table PaymentWay {
          id Int [pk, increment]
          title String [unique, not null]
          createdAt DateTime [default: `now()`]
          deletedAt DateTime
          Transition Transition [not null]
        }
        
        Table Event {
          id Int [pk, increment]
          startDate DateTime [not null]
          endDate DateTime [not null]
          eventType EventType [not null]
          isTrainerCertificateAvailable Boolean [not null]
          trainerCertificateTemplate Template
          isTraineeCertificateAvailable Boolean [not null]
          traineeCertificateTemplate Template
          minAttendancePercentageToGetCertificate Decimal
          isAccredited Boolean [not null]
          leaderTrainer User
          addedBy User
          addedById Int
          remindMeTrainees User [not null]
          onsiteCapacity Int
          address String
          backgroundImagesUrls String[] [not null]
          isContentProvidedByAcademy Boolean [not null]
          titleAr String [not null]
          titleEn String [not null]
          city City
          addressInstructions String
          locationLongitude Decimal
          locationLatitude Decimal
          onlineCapacity Int
          imageUrl String
          cmeHours Decimal
          introductionAr String
          introductionEn String
          objectivesAr String
          objectivesEn String
          mainThemeAr String
          mainThemeEn String
          outcomesAr String
          outcomesEn String
          whyTargetedAudienceAr String
          whyTargetedAudienceEn String
          folder EventFolder [not null]
          visibleOnArchive Boolean [default: true]
          pricingPlan PricingPlan [not null]
          zoomJoinUrl String
          methodOfDelivery MethodOfDelivery [not null]
          eventTypeId Int [not null]
          trainerCertificateTemplateId Int
          traineeCertificateTemplateId Int
          leaderTrainerId Int
          cityId Int
          folderId Int [not null]
          pricingPlanId Int [unique, not null]
          methodOfDeliveryId Int [not null]
          targetedAudiences Profession [not null]
          eventParts EventPart [not null]
          eventDays EventDay [not null]
          expenses Expense [not null]
          traineeEvents TraineeEvent [not null]
          traineeEventGroups TraineeEventGroup [not null]
          trainerEvents TrainerEvent [not null]
          trainerEventStudyMaterials TrainerEventStudyMaterial [not null]
          coupons Coupon [not null]
          traineeEventReviews TraineeEventReview [not null]
          eventLanguages Language [not null]
          createdAt DateTime [default: `now()`]
          deletedAt DateTime
        }
        
        Table MethodOfDelivery {
          id Int [pk, increment]
          titleAr String [unique, not null]
          titleEn String [unique, not null]
          events Event [not null]
          createdAt DateTime [default: `now()`]
          deletedAt DateTime
        }
        
        Table EventType {
          id Int [pk, increment]
          titleEn String [unique, not null]
          titleAr String [unique, not null]
          events Event [not null]
          createdAt DateTime [default: `now()`]
          deletedAt DateTime
        }
        
        Table Template {
          id Int [pk, increment]
          title String [not null]
          data Json [not null]
          purpose TemplatePurpose [not null]
          trainerCertificateEvents Event [not null]
          traineeCertificateEvents Event [not null]
          createdAt DateTime [default: `now()`]
          deletedAt DateTime
        }
        
        Table Language {
          id Int [pk, increment]
          title String [unique, not null]
          events Event [not null]
          createdAt DateTime [default: `now()`]
          deletedAt DateTime
        }
        
        Table EventFolder {
          id Int [pk, increment]
          titleEn String [unique, not null]
          titleAr String [unique, not null]
          events Event [not null]
          createdAt DateTime [default: `now()`]
          deletedAt DateTime
        }
        
        Table PricingPlan {
          id Int [pk, increment]
          hasLateRegistration Boolean
          lateRegistrationStartDate DateTime
          hasGroupDiscount Boolean
          groupDiscountPrice Decimal
          hasGroupDiscountEndDate Boolean
          groupDiscountEndDate DateTime
          groupDiscountMinNumberOfRegistrants Int
          hasWorkshop Boolean
          workshopPrice Decimal
          workshopLateRegistrationPrice Decimal
          workshopGroupDiscountPrice Decimal
          pricingPlanType PricingPlanType
          pricingPlanTypeId Int
          freePlanCertificateCmeIsPaid Boolean
          freePlanCertificateCmePrice Decimal
          paidPlanPrice Decimal
          paidPlanLateRegistrationPrice Decimal
          pricingPlanSpecialtyPrices PricingPlanSpecialtyPrice [not null]
          basedOnSpecialtyPlanOtherSpecialtiesPrice Decimal
          basedOnSpecialtyPlanOtherSpecialtiesLateRegistrationPrice Decimal
          Event Event
          eventPart EventPart
          createdAt DateTime [default: `now()`]
          deletedAt DateTime
        }
        
        Table PricingPlanType {
          id Int [pk, increment]
          titleAr String [unique, not null]
          titleEn String [unique, not null]
          pricingPlans PricingPlan [not null]
          createdAt DateTime [default: `now()`]
          deletedAt DateTime
        }
        
        Table EventPart {
          id Int [pk, increment]
          event Event [not null]
          outlineAr String [not null]
          outlineEn String [not null]
          pricingPlan PricingPlan [not null]
          eventId Int [not null]
          pricingPlanId Int [unique, not null]
          eventDays EventDay [not null]
          trainees TraineeEventPart [not null]
          createdAt DateTime [default: `now()`]
          deletedAt DateTime
        }
        
        Table EventDay {
          id Int [pk, increment]
          eventPart EventPart
          event Event [not null]
          date DateTime [not null]
          startTime DateTime [not null]
          endTime DateTime [not null]
          cmeHours Decimal
          outlineAr String [not null]
          outlineEn String [not null]
          hasWorkshop Boolean
          eventPartId Int
          eventId Int [not null]
          traineeAttendance TraineeEventDayAttendance [not null]
          trainerLessons TrainerEventDayLesson [not null]
          trainerTimeSlots TrainerEventDayTimeSlot [not null]
          createdAt DateTime [default: `now()`]
          deletedAt DateTime
        }
        
        Table PricingPlanSpecialtyPrice {
          id Int [pk, increment]
          professions Profession [not null]
          price Decimal [not null]
          LateRegistrationPrice Decimal
          pricingPlan PricingPlan [not null]
          pricingPlanId Int [not null]
          createdAt DateTime [default: `now()`]
          deletedAt DateTime
        }
        
        Table Expense {
          id Int [pk, increment]
          event Event
          description String
          amount Decimal [not null]
          receiptUrl String
          datetime DateTime [not null]
          type ExpenseType [not null]
          tax Decimal [not null]
          fullAmount Decimal [not null]
          eventId Int
          expenseTypeId Int [not null]
          createdAt DateTime [default: `now()`]
          deletedAt DateTime
        }
        
        Table ExpenseType {
          id Int [pk, increment]
          titleAr String [unique, not null]
          titleEn String [unique, not null]
          expenses Expense [not null]
          createdAt DateTime [default: `now()`]
          deletedAt DateTime
        }
        
        Table TraineeEvent {
          id Int [pk, increment]
          trainee User [not null]
          event Event [not null]
          price Decimal [not null]
          tax Int [not null]
          totalToPay Decimal [not null]
          isLateRegistrant Boolean [not null]
          isWorkshopRegistrant Boolean [not null]
          isGroupRegistrant Boolean [not null]
          workshopPrice Decimal
          isIndividualPay Boolean
          transition Transition
          bookingStatus BookingStatus
          certificatePrice Decimal
          hasBookedAllParts Boolean
          inviter User
          group TraineeEventGroup
          howHeardAboutEvent HowHeardAboutEvent
          review TraineeEventReview
          traineeId Int [not null]
          inviterId Int
          eventId Int [not null]
          transitionId Int
          bookingStatusId Int [default: 1]
          groupId Int
          howHeardAboutEventId Int
          createdAt DateTime [default: `now()`]
          deletedAt DateTime
          parts TraineeEventPart [not null]
          attendance TraineeEventDayAttendance [not null]
          traineeTrainerReviews TraineeTrainerReview [not null]
        
          indexes {
            (traineeId, eventId) [unique]
          }
        }
        
        Table HowHeardAboutEvent {
          id Int [pk, increment]
          titleEn String [unique, not null]
          titleAr String [unique, not null]
          traineeEvents TraineeEvent [not null]
          createdAt DateTime [default: `now()`]
          deletedAt DateTime
        }
        
        Table BookingStatus {
          id Int [pk, increment]
          titleEn String [unique, not null]
          titleAr String [unique, not null]
          traineeEvents TraineeEvent [not null]
          createdAt DateTime [default: `now()`]
          deletedAt DateTime
        }
        
        Table TraineeEventGroup {
          id Int [pk, increment]
          event Event [not null]
          areLateRegistrants Boolean [not null]
          groupTotalToPay Decimal [not null]
          groupPrice Decimal [not null]
          groupTax Decimal [not null]
          areWorkshopRegistrants Boolean [not null]
          groupWorkshopPrice Decimal
          groupCertificatePrice Decimal
          isGroupPay Boolean [not null]
          groupTransaction Transition
          traineeEvents TraineeEvent [not null]
          leader User [not null]
          eventId Int [not null]
          leaderId Int [not null]
          transitionId Int
          createdAt DateTime [default: `now()`]
          deletedAt DateTime
        
          indexes {
            (eventId, leaderId) [unique]
          }
        }
        
        Table TraineeEventPart {
          id Int [pk, increment]
          traineeEvent TraineeEvent [not null]
          eventPart EventPart [not null]
          partTotalPrice Decimal [not null]
          traineeEventId Int [not null]
          eventPartId Int [not null]
          createdAt DateTime [default: `now()`]
          deletedAt DateTime
        }
        
        Table TraineeEventDayAttendance {
          id Int [pk, increment]
          traineeEvent TraineeEvent [not null]
          eventDay EventDay [not null]
          joinTime DateTime [not null]
          leaveTime DateTime
          traineeEventId Int [not null]
          eventDayId Int [not null]
          createdAt DateTime [default: `now()`]
          deletedAt DateTime
        }
        
        Table TrainerEvent {
          id Int [pk, increment]
          trainer User [not null]
          event Event [not null]
          youtubeUrl String
          introductionEn String
          introductionAr String
          objectivesEn String
          objectivesAr String
          mainThemeEn String
          mainThemeAr String
          outcomesEn String
          outcomesAr String
          whyTargetedAudienceAr String
          whyTargetedAudienceEn String
          contentIsAdded Boolean
          transition Transition
          toTransferAmount Decimal
          toTransferType ToTransferType
          targetedAudiences Profession [not null]
          trainerId Int [not null]
          eventId Int [not null]
          transitionId Int
          dayLessons TrainerEventDayLesson [not null]
          timeSlots TrainerEventDayTimeSlot [not null]
          traineeTrainerReviews TraineeTrainerReview [not null]
          StudyMaterials TrainerEventStudyMaterial [not null]
          createdAt DateTime [default: `now()`]
          deletedAt DateTime
        
          indexes {
            (trainerId, eventId) [unique]
          }
        }
        
        Table TrainerEventStudyMaterial {
          id Int [pk, increment]
          trainerEvent TrainerEvent
          event Event [not null]
          url String [not null]
          title String [not null]
          trainerEventId Int
          eventId Int [not null]
          createdAt DateTime [default: `now()`]
          deletedAt DateTime
        }
        
        Table TrainerEventDayLesson {
          id Int [pk, increment]
          trainerEvent TrainerEvent
          eventDay EventDay [not null]
          startTime DateTime [not null]
          endTime DateTime [not null]
          outlineAr String [not null]
          outlineEn String [not null]
          methodOfTeaching MethodOfTeachingType
          trainerEventId Int
          eventDayId Int [not null]
          methodOfTeachingTypeId Int
          TrainerEventDayLessonType TrainerEventDayLessonType [not null]
          trainerEventDayLessonTypeId Int [not null]
          createdAt DateTime [default: `now()`]
          deletedAt DateTime
        }
        
        Table MethodOfTeachingType {
          id Int [pk, increment]
          titleAr String [unique, not null]
          titleEn String [unique, not null]
          lessons TrainerEventDayLesson [not null]
          createdAt DateTime [default: `now()`]
          deletedAt DateTime
        }
        
        Table TrainerEventDayLessonType {
          id Int [pk, increment]
          titleAr String [unique, not null]
          titleEn String [unique, not null]
          lessons TrainerEventDayLesson [not null]
          createdAt DateTime [default: `now()`]
          deletedAt DateTime
        }
        
        Table TrainerEventDayTimeSlot {
          id Int [pk, increment]
          addedBy User
          trainerEvent TrainerEvent [not null]
          eventDay EventDay [not null]
          startTime DateTime [not null]
          endTime DateTime [not null]
          addedById Int
          trainerEventId Int [not null]
          eventDayId Int [not null]
          createdAt DateTime [default: `now()`]
          deletedAt DateTime
        }
        
        Table TraineeTrainerReview {
          id Int [pk, increment]
          traineeEvent TraineeEvent [not null]
          trainerEvent TrainerEvent [not null]
          reviewOfFive Int [not null]
          why String
          choices TraineeTrainerReviewChoice [not null]
          traineeEventId Int [not null]
          trainerEventId Int [not null]
          createdAt DateTime [default: `now()`]
          deletedAt DateTime
        
          indexes {
            (traineeEventId, trainerEventId) [unique]
          }
        }
        
        Table TraineeTrainerReviewChoice {
          id Int [pk, increment]
          titleEn String [not null]
          titleAr String [not null]
          isGood Boolean [not null]
          reviews TraineeTrainerReview [not null]
          createdAt DateTime [default: `now()`]
          deletedAt DateTime
        }
        
        Table Coupon {
          id Int [pk, increment]
          couponType CouponType [not null]
          fixedAmountDiscount Decimal
          percentageDiscount Decimal
          percentageMaxAmount Decimal
          expiryDate DateTime [not null]
          inviter User
          event Event
          isForAllSpecialties Boolean [not null]
          isForAllEvents Boolean [not null]
          specialties Specialty [not null]
          inviterId Int
          eventId Int
          createdAt DateTime [default: `now()`]
          deletedAt DateTime
        }
        
        Table TransitionStatusType {
          id Int [pk, increment]
          titleEn String [unique, not null]
          titleAr String [unique, not null]
          transitions Transition [not null]
          createdAt DateTime [default: `now()`]
          deletedAt DateTime
        }
        
        Table TraineeEventReview {
          id Int [pk, increment]
          event Event [not null]
          TraineeEvent TraineeEvent [not null]
          reviewOfFive Int [not null]
          why String
          traineeEventReviewChoices TraineeEventReviewChoice [not null]
          traineeEventId Int [unique, not null]
          eventId Int [not null]
          createdAt DateTime [default: `now()`]
          deletedAt DateTime
        }
        
        Table TraineeEventReviewChoice {
          id Int [pk, increment]
          titleEn String [not null]
          titleAr String [not null]
          isGood Boolean [not null]
          createdAt DateTime [default: `now()`]
          deletedAt DateTime
          reviews TraineeEventReview [not null]
        }
        
        Table Cv {
          id Int [pk, increment]
          trainerRank Rank
          education Education [not null]
          professionalSkills ProfessionalSkills [not null]
          trainingExperience TrainingExperience [not null]
          scientificResearches ScientificResearch [not null]
          User User [not null]
          rankId Int
        }
        
        Table TrainingExperience {
          id Int [pk, increment]
          eventName String
          executingAgency String
          Cv Cv
          cvId Int
        }
        
        Table Education {
          id Int [pk, increment]
          university String
          profession Profession
          specialty Specialty
          qualification Qualification
          graduationYear DateTime
          Cv Cv
          cvId Int
          professionId Int
          specialtyId Int
          qualificationId Int
        }
        
        Table ProfessionalSkills {
          id Int [pk, increment]
          yearsOfExperience Int
          academicRank AcademicRank
          placeOfWork String
          natureOfWork String
          type ProfessionalSkillsType
          Cv Cv
          cvId Int
          academicRankId Int
        }
        
        Table AcademicRank {
          id Int [pk, increment]
          titleEn String [not null]
          titleAr String [not null]
          ProfessionalSkills ProfessionalSkills [not null]
        }
        
        Table ScientificResearch {
          id Int [pk, increment]
          description String
          type ScientificResearchType
          role ScientificResearchRole
          Cv Cv
          cvId Int
        }
        
        Table remindMeEvents {
          remindmeeventsId Int [ref: > Event.id]
          remindmetraineesId Int [ref: > User.id]
        }
        
        Table CouponToSpecialty {
          couponsId Int [ref: > Coupon.id]
          specialtiesId Int [ref: > Specialty.id]
        }
        
        Table ProfessionToTrainerEvent {
          trainereventsId Int [ref: > TrainerEvent.id]
          targetedaudiencesId Int [ref: > Profession.id]
        }
        
        Table EventToProfession {
          eventsId Int [ref: > Event.id]
          targetedaudiencesId Int [ref: > Profession.id]
        }
        
        Table PricingPlanSpecialtyPriceToProfession {
          pricingplansId Int [ref: > PricingPlanSpecialtyPrice.id]
          professionsId Int [ref: > Profession.id]
        }
        
        Table EventToLanguage {
          eventlanguagesId Int [ref: > Language.id]
          eventsId Int [ref: > Event.id]
        }
        
        Table TraineeTrainerReviewToTraineeTrainerReviewChoice {
          choicesId Int [ref: > TraineeTrainerReviewChoice.id]
          reviewsId Int [ref: > TraineeTrainerReview.id]
        }
        
        Table TraineeEventReviewToTraineeEventReviewChoice {
          traineeeventreviewchoicesId Int [ref: > TraineeEventReviewChoice.id]
          reviewsId Int [ref: > TraineeEventReview.id]
        }
        
        Enum ScientificResearchType {
          conferences
          journals
        }
        
        Enum ScientificResearchRole {
          lead
          assistant
        }
        
        Enum ProfessionalSkillsType {
          academic
          practicalExperiance
        }
        
        Enum Gender {
          male
          female
        }
        
        Enum TemplatePurpose {
          certificate
          email
          notification
          page
          others
        }
        
        Enum ToTransferType {
          percentage
          fixed
        }
        
        Enum CouponType {
          fixed
          percentage
        }
        
        Ref: Account.userId > User.id
        
        Ref: Session.userId > User.id
        
        Ref: User.roleId > Role.id
        
        Ref: User.nationalityId > Country.id
        
        Ref: User.inviterId - User.id
        
        Ref: User.specialtyId > Specialty.id
        
        Ref: User.professionId > Profession.id
        
        Ref: User.cityId > City.id
        
        Ref: User.stateId > State.id
        
        Ref: User.countryId > Country.id
        
        Ref: User.cvId > Cv.id
        
        Ref: Specialty.professionId > Profession.id [delete: Cascade]
        
        Ref: State.countryId > Country.id
        
        Ref: City.stateId > State.id
        
        Ref: City.countryId > Country.id
        
        Ref: MemberNeeds.userId > User.id
        
        Ref: BankAccount.userId - User.id
        
        Ref: Transition.transitionTypeId > TransitionType.id
        
        Ref: Transition.paymentWayId > PaymentWay.id
        
        Ref: Transition.firstPartyUserId > User.id
        
        Ref: Transition.secondPartyUserId > User.id
        
        Ref: Transition.transitionStatusTypeId > TransitionStatusType.id
        
        Ref: Event.eventTypeId > EventType.id
        
        Ref: Event.trainerCertificateTemplateId > Template.id
        
        Ref: Event.traineeCertificateTemplateId > Template.id
        
        Ref: Event.leaderTrainerId > User.id
        
        Ref: Event.addedById > User.id
        
        Ref: Event.cityId > City.id
        
        Ref: Event.folderId > EventFolder.id
        
        Ref: Event.pricingPlanId - PricingPlan.id
        
        Ref: Event.methodOfDeliveryId > MethodOfDelivery.id
        
        Ref: PricingPlan.pricingPlanTypeId > PricingPlanType.id
        
        Ref: EventPart.eventId > Event.id
        
        Ref: EventPart.pricingPlanId - PricingPlan.id
        
        Ref: EventDay.eventPartId > EventPart.id
        
        Ref: EventDay.eventId > Event.id
        
        Ref: PricingPlanSpecialtyPrice.pricingPlanId > PricingPlan.id
        
        Ref: Expense.eventId > Event.id
        
        Ref: Expense.expenseTypeId > ExpenseType.id
        
        Ref: TraineeEvent.traineeId > User.id
        
        Ref: TraineeEvent.eventId > Event.id
        
        Ref: TraineeEvent.transitionId > Transition.id
        
        Ref: TraineeEvent.bookingStatusId > BookingStatus.id
        
        Ref: TraineeEvent.inviterId > User.id
        
        Ref: TraineeEvent.groupId > TraineeEventGroup.id
        
        Ref: TraineeEvent.howHeardAboutEventId > HowHeardAboutEvent.id
        
        Ref: TraineeEventGroup.eventId > Event.id
        
        Ref: TraineeEventGroup.transitionId > Transition.id
        
        Ref: TraineeEventGroup.leaderId > User.id
        
        Ref: TraineeEventPart.traineeEventId > TraineeEvent.id
        
        Ref: TraineeEventPart.eventPartId > EventPart.id
        
        Ref: TraineeEventDayAttendance.traineeEventId > TraineeEvent.id
        
        Ref: TraineeEventDayAttendance.eventDayId > EventDay.id
        
        Ref: TrainerEvent.trainerId > User.id
        
        Ref: TrainerEvent.eventId > Event.id
        
        Ref: TrainerEvent.transitionId > Transition.id
        
        Ref: TrainerEventStudyMaterial.trainerEventId > TrainerEvent.id
        
        Ref: TrainerEventStudyMaterial.eventId > Event.id
        
        Ref: TrainerEventDayLesson.trainerEventId > TrainerEvent.id
        
        Ref: TrainerEventDayLesson.eventDayId > EventDay.id
        
        Ref: TrainerEventDayLesson.methodOfTeachingTypeId > MethodOfTeachingType.id
        
        Ref: TrainerEventDayLesson.trainerEventDayLessonTypeId > TrainerEventDayLessonType.id
        
        Ref: TrainerEventDayTimeSlot.addedById > User.id
        
        Ref: TrainerEventDayTimeSlot.trainerEventId > TrainerEvent.id
        
        Ref: TrainerEventDayTimeSlot.eventDayId > EventDay.id
        
        Ref: TraineeTrainerReview.traineeEventId > TraineeEvent.id
        
        Ref: TraineeTrainerReview.trainerEventId > TrainerEvent.id
        
        Ref: Coupon.inviterId > User.id
        
        Ref: Coupon.eventId > Event.id
        
        Ref: TraineeEventReview.eventId > Event.id
        
        Ref: TraineeEventReview.traineeEventId - TraineeEvent.id
        
        Ref: Cv.rankId > Rank.id
        
        Ref: TrainingExperience.cvId > Cv.id
        
        Ref: Education.professionId > Profession.id
        
        Ref: Education.specialtyId > Specialty.id
        
        Ref: Education.qualificationId > Qualification.id
        
        Ref: Education.cvId > Cv.id
        
        Ref: ProfessionalSkills.academicRankId > AcademicRank.id
        
        Ref: ProfessionalSkills.cvId > Cv.id
        
        Ref: ScientificResearch.cvId > Cv.id

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.