1.17.11 • Published 3 years ago

create-alchemy-sql-be v1.17.11

Weekly downloads
7
License
ISC
Repository
github
Last release
3 years ago

Create Alchemy SQL BE

Don't install this package. Use npm init in parent directory.

npm init alchemy-sql-be NAME_OF_PROJECT

  1. npm init alchemy-sql-be PROJECT_NAME

  2. cd into PROJECT_NAME

  3. create a new repo on github

  4. git remote add origin REPO_URL **do not initialize with README.md

Getting started

  1. Change all the files in the data directory to match the data model of your app.
  2. Run heroku create
  3. Run npm run setup-heroku to create a heroku SQL database in the cloud to go with your heroku app.
  4. Run heroku config:get DATABASE_URL to get your heroku sql database url from the cloud. Put this in your .env file, under DATABASE_URL
  5. Run npm run setup-db
  6. Run npm run start:watch to start the dev server

Adding auth routes and protecting routes:

At the top of server.js:

// Auth
const ensureAuth = require('./lib/auth/ensure-auth');
const createAuthRoutes = require('./lib/auth/create-auth-routes');
const authRoutes = createAuthRoutes({
    selectUser(email) {
        return client.query(`
            SELECT id, email, hash, display_name as "displayName" 
            FROM users
            WHERE email = $1;
        `,
        [email]
        ).then(result => result.rows[0]);
    },
    insertUser(user, hash) {
        console.log(user);
        return client.query(`
            INSERT into users (email, hash, display_name)
            VALUES ($1, $2, $3)
            RETURNING id, email, display_name as "displayName";
        `,
        [user.email, hash, user.displayName]
        ).then(result => result.rows[0]);
    }
});


// setup authentication routes to give user an auth token
// creates a /signin and a /signup route. 
// each requires a POST body with a .email and a .password
app.use('/api/auth', authRoutes);

// everything that starts with "/api" below here requires an auth token!
app.use('/api', ensureAuth);

app.get('/api/test', (req, res) => {
    res.json({
        message: `in this proctected route, we get the user's id like so: ${req.userId}`
    });
});
1.17.11

3 years ago

1.17.9

4 years ago

1.17.8

4 years ago

1.17.6

4 years ago

1.17.5

4 years ago

1.17.7

4 years ago

1.17.4

4 years ago

1.17.3

4 years ago

1.17.2

4 years ago

1.17.1

4 years ago

1.17.0

4 years ago

1.16.9

4 years ago

1.16.8

4 years ago

1.16.7

4 years ago

1.16.6

4 years ago

1.16.5

4 years ago

1.16.4

4 years ago

1.16.3

4 years ago

1.16.2

4 years ago

1.16.1

4 years ago

1.16.0

4 years ago