<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <div class="moz-cite-prefix">Can you explain why you don't want to
      run separate applications with separate databases?<br>
      <br>
      On 05/13/2018 05:50 AM, Simon Van Casteren wrote:<br>
    </div>
    <blockquote type="cite"
cite="mid:CAC0+czowdR3_EFYS8rSq2YAJJ2MXrQC8pOZz1kWSPEU5h216aQ@mail.gmail.com">
      <div dir="auto">Hi,
        <div dir="auto"><br>
        </div>
        <div dir="auto">I'm in the process of making a new application
          for music schools, using ur/web for front and backend. I'm at
          the point where I have two customers and am starting to
          implement support for multiple clients/tenants in one DB
          (postgres). I've been planning to implement multitenancy from
          the start, but haven't had the time yet.</div>
        <div dir="auto"><br>
        </div>
        <div dir="auto">Has anyone implemented a form of multitenancy in
          ur/web before? </div>
        <div dir="auto"><br>
        </div>
        <div dir="auto">I see two areas that need consideration. </div>
        <div dir="auto"><br>
        </div>
        <div dir="auto">1. Deciding which user belongs to which tenant.
          Ideally I'd have a seperate url for each tenant that I can
          give out to my clients (=the schools), do some dns magic to
          send them all to the same exe, extract the tenantname from the
          url and save the tenantId in a cookie. Also ideally, the
          user's url would not change, ie. All urls should go to <a
            href="http://myschool.coolschools.be" moz-do-not-send="true">myschool.coolschools.be</a>
          during a session, not getting redirected at all. This is all
          in an ideal situation of course.</div>
        <div dir="auto"><br>
        </div>
        <div dir="auto">2. Database access: I'll have tenantId columns
          in all tables + foreign keys and indexes on these columns. I'm
          a bit afraid I'll forget adding tenantId = cookie.tenantid
          somewhere, so I was thinking I could make a function that
          takes a sql_exp and a tenantId and adds these clauses to all
          tables involved. Not 100% sure that will work but I think it's
          possible, I haven't had to dive into the internals of sql_exp
          yet. Secondly, I wonder if I can somehow declare my endpoints
          to be tenantdepandent (all but the most general will be) maybe
          via newtyping the transaction datatype and then allowing the
          execute only sql queries that have the above function applied.
          Just dreaming out loud here.</div>
        <div dir="auto"><br>
        </div>
        <div dir="auto">I'd be very interested in any ideas or
          examples! </div>
        <div dir="auto"><br>
        </div>
        <div dir="auto">Simon </div>
      </div>
    </blockquote>
    <br>
  </body>
</html>