Skip to content

Commit cf89eff

Browse files
authored
Merge pull request #20 from daeisbae/19-modify-create-table-sql-due-to-change-in-requirement
Change in attributes and pk, and implement constraints (#19)
2 parents ea5564f + 68d60de commit cf89eff

File tree

2 files changed

+69
-65
lines changed

2 files changed

+69
-65
lines changed

docs/README.md

Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -243,57 +243,57 @@ await chain.invoke({
243243
```mermaid
244244
erDiagram
245245
Repository {
246-
string Url PK
247-
string Owner
248-
string Repo
249-
string Language
250-
string Descriptions
251-
string DefaultRepo
252-
int stars
253-
int forks
246+
string url PK
247+
string owner
248+
string repo
249+
string language
250+
string descriptions
251+
string default_branch
252+
integer stars
253+
integer forks
254254
}
255255
256256
Topics {
257-
string Topic PK
257+
string topic_name PK
258258
}
259259
260260
RepositoryTopics {
261-
string RepositoryUrl FK "References Repository"
262-
string Topic FK "References Topics"
261+
string repository_url FK "References Repository"
262+
string topic_name FK "References Topics"
263263
}
264264
265265
Branch {
266-
string LastCommitSha PK
267-
string Name PK
268-
date Seen
269-
string AiAnalysisSummary
270-
string Url FK "References Repository"
266+
integer branch_id PK
267+
string last_commit_sha
268+
string name
269+
string repository_url FK "References Repository"
270+
string commit_at
271+
string created_at
272+
string ai_summary
271273
}
272274
273275
Folder {
274-
int FolderId PK
275-
string Name
276-
string Path "Optional"
277-
string ParentFolderId FK "References Folder"
278-
string AiAnalysisSummary
279-
string BranchSha FK "References Branch"
280-
string BranchName FK "References Branch"
276+
integer folder_id PK
277+
string name
278+
string path
279+
integer parent_folder_id FK "References Folder"
280+
string ai_summary
281+
integer branch_id FK "References Branch"
281282
}
282283
283284
File {
284-
int FileID PK
285-
string Name
286-
string Sha
287-
string Language
288-
string Content
289-
string AiAnalysisSummary
290-
int FolderId FK "References Folder"
285+
integer file_id PK
286+
string name
287+
string language
288+
integer folder_id FK "References Folder"
289+
string content
290+
string ai_summary
291291
}
292292
293293
Repository ||--o{ Branch : has
294294
Repository ||--o{ RepositoryTopics : has
295295
RepositoryTopics }o--|| Topics : references
296296
Branch ||--o{ Folder : contains
297297
Folder ||--o{ Folder : has_parent
298-
Folder ||--|{ File : contain
298+
Folder ||--|{ File : contains
299299
```

src/db/migrations/create_tables.sql

Lines changed: 38 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,55 +1,59 @@
1-
CREATE TABLE Repository (
2-
url VARCHAR(255) PRIMARY KEY,
3-
owner VARCHAR(50) NOT NULL,
4-
repo VARCHAR(50) NOT NULL,
5-
language VARCHAR(20) NOT NULL,
6-
descriptions TEXT,
7-
default_branch VARCHAR(50),
8-
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
1+
CREATE TABLE IF NOT EXISTS Repository (
2+
url VARCHAR(255) PRIMARY KEY,
3+
owner VARCHAR(50) NOT NULL,
4+
repo VARCHAR(50) NOT NULL,
5+
language VARCHAR(20) NOT NULL,
6+
descriptions TEXT,
7+
default_branch VARCHAR(50),
8+
stars INT,
9+
forks INT
910
);
1011

11-
CREATE TABLE Topics (
12-
topic_name VARCHAR(50) PRIMARY KEY
12+
CREATE TABLE IF NOT EXISTS Topics (
13+
topic_name VARCHAR(50) PRIMARY KEY
1314
);
1415

15-
CREATE TABLE RepositoryTopics (
16-
repository_url VARCHAR(255),
17-
topic_name VARCHAR(50),
16+
CREATE TABLE IF NOT EXISTS RepositoryTopics (
17+
repository_url VARCHAR(255),
18+
topic_name VARCHAR(50),
1819
PRIMARY KEY (repository_url, topic_name),
1920
FOREIGN KEY (repository_url) REFERENCES Repository(url),
2021
FOREIGN KEY (topic_name) REFERENCES Topics(topic_name)
2122
);
2223

23-
2424
/**
2525
Last Commit SHA length: https://stackoverflow.com/questions/18134627/how-much-of-a-git-sha-is-generally-considered-necessary-to-uniquely-identify-a
2626
*/
27-
CREATE TABLE Branch (
28-
last_commit_sha VARCHAR(40) NOT NULL PRIMARY KEY,
27+
CREATE TABLE IF NOT EXISTS Branch (
28+
branch_id SERIAL PRIMARY KEY,
29+
last_commit_sha VARCHAR(40) NOT NULL,
2930
name VARCHAR(50) NOT NULL,
3031
repository_url VARCHAR(255),
3132
commit_at TIMESTAMP,
32-
CONSTRAINT fk_repository FOREIGN KEY (repository_url) REFERENCES Repository(url)
33+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
34+
ai_summary TEXT,
35+
FOREIGN KEY (repository_url) REFERENCES Repository(url),
36+
CONSTRAINT unique_last_commit_per_repo UNIQUE (repository_url, last_commit_sha)
3337
);
3438

35-
CREATE TABLE Folder (
36-
folder_id SERIAL PRIMARY KEY,
37-
name VARCHAR(30) NOT NULL,
38-
path VARCHAR(100),
39-
parent_folder_id SERIAL,
40-
branch_sha VARCHAR(40) NOT NULL,
41-
branch_name VARCHAR(50) NOT NULL,
39+
CREATE TABLE IF NOT EXISTS Folder (
40+
folder_id SERIAL PRIMARY KEY,
41+
name VARCHAR(30),
42+
path VARCHAR(100) NOT NULL,
43+
parent_folder_id INTEGER,
44+
ai_summary TEXT,
45+
branch_id INTEGER NOT NULL,
4246
FOREIGN KEY (parent_folder_id) REFERENCES Folder(folder_id),
43-
FOREIGN KEY (branch_sha) REFERENCES Branch(last_commit_sha),
44-
FOREIGN KEY (branch_name) REFERENCES Branch(name)
47+
FOREIGN KEY (branch_id) REFERENCES Branch(branch_id),
48+
CHECK ( (path = '' AND parent_folder_id IS NULL) OR (path != '' AND parent_folder_id IS NOT NULL) )
4549
);
4650

47-
CREATE TABLE File (
48-
file_id SERIAL PRIMARY KEY,
49-
name VARCHAR(30) NOT NULL,
50-
sha VARCHAR(40) NOT NULL,
51-
language VARCHAR(20),
52-
parent_folder_id SERIAL NOT NULL,
53-
ai_summary TEXT,
54-
FOREIGN KEY (parent_folder_id) REFERENCES Folder(folder_id)
51+
CREATE TABLE IF NOT EXISTS File (
52+
file_id SERIAL PRIMARY KEY,
53+
name VARCHAR(30) NOT NULL,
54+
language VARCHAR(20),
55+
folder_id INTEGER NOT NULL,
56+
content TEXT,
57+
ai_summary TEXT,
58+
FOREIGN KEY (folder_id) REFERENCES Folder(folder_id)
5559
);

0 commit comments

Comments
 (0)