Skip to content

Commit

Permalink
WIP simple signup to db connection
Browse files Browse the repository at this point in the history
  • Loading branch information
Firebird1029 committed Feb 28, 2024
1 parent 9837e72 commit c79b068
Show file tree
Hide file tree
Showing 7 changed files with 183 additions and 3 deletions.
57 changes: 56 additions & 1 deletion backend/db.py
Original file line number Diff line number Diff line change
@@ -1 +1,56 @@
import sqlite3
from flask import Flask
from flask_sqlalchemy import SQLAlchemy

from typing import List
from typing import Optional
from sqlalchemy import create_engine
from sqlalchemy import ForeignKey
from sqlalchemy import String
from sqlalchemy.orm import DeclarativeBase
from sqlalchemy.orm import Mapped
from sqlalchemy.orm import mapped_column
from sqlalchemy.orm import relationship


class Base(DeclarativeBase):
pass


app = Flask(__name__)
app.config["SQLALCHEMY_DATABASE_URI"] = "postgresql://localhost/cs419project"
db = SQLAlchemy(app, model_class=Base)


class User(db.Model):
id: Mapped[int] = mapped_column(primary_key=True)
username: Mapped[str] = mapped_column(unique=True)
email: Mapped[str]
fullname: Mapped[Optional[str]]
addresses: Mapped[List["Address"]] = relationship(
back_populates="user", cascade="all, delete-orphan"
)

def __repr__(self) -> str:
return (
f"User(id={self.id!r}, name={self.username!r}, fullname={self.fullname!r})"
)


class Address(db.Model):
id: Mapped[int] = mapped_column(primary_key=True)
email_address: Mapped[str]
user_id: Mapped[int] = mapped_column(ForeignKey("user.id"))
user: Mapped["User"] = relationship(back_populates="addresses")

def __repr__(self) -> str:
return f"Address(id={self.id!r}, email_address={self.email_address!r})"


with app.app_context():
db.create_all()
user = User(
username="user1",
email="[email protected]",
)
db.session.add(user)
db.session.commit()
5 changes: 5 additions & 0 deletions backend/requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,19 @@ blinker==1.7.0
click==8.1.7
dill==0.3.8
Flask==3.0.2
Flask-SQLAlchemy==3.1.1
greenlet==3.0.3
isort==5.13.2
itsdangerous==2.1.2
Jinja2==3.1.3
MarkupSafe==2.1.5
mccabe==0.7.0
platformdirs==4.2.0
psycopg2==2.9.9
pylint==3.0.3
python-dotenv==1.0.1
SQLAlchemy==2.0.27
tomlkit==0.12.3
typing_extensions==4.10.0
watchdog==4.0.0
Werkzeug==3.0.1
4 changes: 3 additions & 1 deletion frontend/.eslintrc.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@
"no-unused-vars": "warn",
"no-console": "warn",
"import/no-extraneous-dependencies": "off",
"no-plusplus": "off"
"no-plusplus": "off",
"import/extensions": "off",
"import/no-unresolved": "off"
}
}
91 changes: 91 additions & 0 deletions frontend/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions frontend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
"@chakra-ui/react": "^2.8.2",
"@emotion/react": "^11.11.3",
"@emotion/styled": "^11.11.0",
"axios": "^1.6.7",
"framer-motion": "^11.0.5",
"next": "14.1.0",
"react": "^18",
Expand Down
7 changes: 6 additions & 1 deletion frontend/src/app/register/page.jsx
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
"use client";

import {
Button,
Center,
Expand All @@ -7,6 +9,7 @@ import {
Link,
Stack,
} from "@chakra-ui/react";
import { register } from "@/services/apiService";

export default function Register() {
return (
Expand All @@ -21,7 +24,9 @@ export default function Register() {
<Input placeholder="" />
<p>Password:</p>
<Input placeholder="" type="password" />
<Button colorScheme="blue">Sign Up</Button>
<Button colorScheme="blue" onClick={() => register()}>
Sign Up
</Button>
</Stack>

<Stack spacing={4} mt={16}>
Expand Down
21 changes: 21 additions & 0 deletions frontend/src/services/apiService.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import axios from "axios";

// Create an axios instance
const api = axios.create({
baseURL: "http://localhost:5000/api",
withCredentials: true,
});

// Register
function register(username, email, password) {
console.log("hi");
return api.post("/auth/register", { username, email, password });
}

// Login
function login(username, password) {
return api.post("/auth/login", { username, password });
}

// export the service
export { register, login };

0 comments on commit c79b068

Please sign in to comment.