Skip to content
This repository was archived by the owner on May 18, 2024. It is now read-only.

Commit df72f64

Browse files
authored
Merge pull request #89 from samchon/features/docs
Write README again
2 parents e681043 + 2aed6b2 commit df72f64

File tree

64 files changed

+380
-339
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

64 files changed

+380
-339
lines changed

.npmignore

-12
This file was deleted.

README.md

+119-269
Large diffs are not rendered by default.
4.81 MB
Loading

package.json

+16-5
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
{
22
"name": "safe-typeorm",
3-
"version": "2.0.3",
3+
"version": "2.0.4",
44
"description": "Make TypeORM much safer",
55
"main": "lib/index.js",
66
"typings": "lib/index.d.ts",
77
"scripts": {
8-
"build": "rimraf lib && tsc",
8+
"build": "rimraf lib && ttsc",
99
"dev": "npm run build -- --watch",
1010
"eslint": "eslint src",
1111
"eslint:fix": "eslint src --fix",
@@ -29,7 +29,7 @@
2929
"dependencies": {
3030
"bcryptjs": "^2.4.3",
3131
"pluralize": "^8.0.0",
32-
"tstl": "^2.5.2",
32+
"tstl": "^2.5.13",
3333
"typeorm": "^0.2.41",
3434
"uuid": "^8.3.2"
3535
},
@@ -50,6 +50,17 @@
5050
"sloc": "^0.2.1",
5151
"sqlite3": "^5.0.2",
5252
"ts-node": "^9.1.1",
53-
"typescript": "^4.5.2"
54-
}
53+
"ttypescript": "^1.5.15",
54+
"typescript": "^4.5.2",
55+
"typescript-transform-paths": "^3.4.6"
56+
},
57+
"files": [
58+
"LICENSE",
59+
"README.md",
60+
"package.json",
61+
"lib",
62+
"src",
63+
"!lib/test",
64+
"!src/test"
65+
]
5566
}

src/Model.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ import { insert } from "./functional/insert";
1515
import { toPrimitive } from "./functional/toPrimitive";
1616
import { update } from "./functional/update";
1717

18-
import { FieldLike } from "./typings/FieldLike";
1918
import { Creator as _Creator } from "./typings/Creator";
2019
import { Field } from "./typings/Field";
20+
import { FieldLike } from "./typings/FieldLike";
2121
import { Initialized } from "./typings/Initialized";
2222
import { OmitNever } from "./typings/OmitNever";
2323
import { Operator } from "./typings/Operator";
+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import safe from "safe-typeorm";
2+
3+
import { BbsReviewArticle } from "../models/bbs/BbsReviewArticle";
4+
5+
export async function test_app_join_builder_initialize(
6+
reviews: BbsReviewArticle[],
7+
): Promise<void> {
8+
const builder = safe.createAppJoinBuilder(BbsReviewArticle, (review) => {
9+
review.join("base", (article) => {
10+
article.join("group");
11+
article.join("category").join("parent");
12+
article.join("contents", (content) => {
13+
content.join("reviewContent");
14+
content.join("files");
15+
});
16+
article.join("comments").join("files");
17+
article.join("tags");
18+
});
19+
});
20+
await builder.execute(reviews);
21+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import safe from "safe-typeorm";
2+
3+
import { BbsArticle } from "../models/bbs/BbsArticle";
4+
import { BbsArticleContent } from "../models/bbs/BbsArticleContent";
5+
import { BbsComment } from "../models/bbs/BbsComment";
6+
import { BbsGroup } from "../models/bbs/BbsGroup";
7+
import { BbsReviewArticle } from "../models/bbs/BbsReviewArticle";
8+
9+
export async function test_app_join_builder_initialize(
10+
groups: BbsGroup[],
11+
): Promise<void> {
12+
const builder = safe.AppJoinBuilder.initialize(BbsGroup, {
13+
articles: safe.AppJoinBuilder.initialize(BbsArticle, {
14+
group: undefined,
15+
review: safe.AppJoinBuilder.initialize(BbsReviewArticle, {
16+
base: undefined,
17+
}),
18+
category: "join" as const,
19+
contents: safe.AppJoinBuilder.initialize(BbsArticleContent, {
20+
files: "join" as const,
21+
article: undefined,
22+
reviewContent: undefined,
23+
}),
24+
comments: safe.AppJoinBuilder.initialize(BbsComment, {
25+
article: undefined,
26+
files: "join",
27+
}),
28+
tags: "join",
29+
__mv_last: undefined,
30+
question: undefined,
31+
answer: undefined,
32+
scraps: undefined,
33+
}),
34+
});
35+
await builder.execute(groups);
36+
}
+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import safe from "safe-typeorm";
2+
import * as orm from "typeorm";
3+
4+
import { BbsGroup } from "../models/bbs/BbsGroup";
5+
import { BbsQuestionArticle } from "../models/bbs/BbsQuestionArticle";
6+
7+
export function demo_join_query_builder(
8+
group: BbsGroup,
9+
exclude: string[],
10+
): orm.SelectQueryBuilder<BbsQuestionArticle> {
11+
const question = safe.createJoinQueryBuilder(BbsQuestionArticle);
12+
13+
// JOIN
14+
const article = question.innerJoin("base");
15+
const content = article.innerJoin("__mv_last").innerJoin("content");
16+
const category = article.innerJoin("category");
17+
18+
// SELECT
19+
article.addSelect("id").addSelect("writer").addSelect("created_at");
20+
content.addSelect("title").addSelect("created_at", "updated_at");
21+
article.leftJoin("answer").leftJoin("base", "AA", (answer) => {
22+
answer.addSelect("writer", "answer_writer");
23+
answer.addSelect("created_at", "answer_created_at");
24+
answer
25+
.leftJoin("__mv_last", "AL")
26+
.leftJoin("content", "AC")
27+
.addSelect(
28+
["title", (str) => `COALESCE(${str}, 'NONE')`],
29+
"answer_title",
30+
);
31+
});
32+
content.addOrderBy("created_at", "DESC");
33+
34+
// WHERE
35+
article.andWhere("group", group);
36+
category.andWhere("code", "NOT IN", exclude);
37+
return question.statement();
38+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
import safe from "safe-typeorm";
2+
import * as orm from "typeorm";
3+
4+
import { BbsArticle } from "../models/bbs/BbsArticle";
5+
import { BbsArticleContent } from "../models/bbs/BbsArticleContent";
6+
import { BbsCategory } from "../models/bbs/BbsCategory";
7+
import { BbsGroup } from "../models/bbs/BbsGroup";
8+
import { BbsQuestionArticle } from "../models/bbs/BbsQuestionArticle";
9+
10+
export function demo_join_query_builder_onetime(
11+
group: BbsGroup,
12+
exclude: string[],
13+
): orm.SelectQueryBuilder<BbsQuestionArticle> {
14+
return safe
15+
.createJoinQueryBuilder(BbsQuestionArticle, (question) => {
16+
question.innerJoin("base", (article) => {
17+
article.innerJoin("group");
18+
article.innerJoin("category");
19+
article.innerJoin("__mv_last").innerJoin("content");
20+
});
21+
question
22+
.leftJoin("answer")
23+
.leftJoin("base", "AA")
24+
.leftJoin("__mv_last", "AL")
25+
.leftJoin("content", "AC");
26+
})
27+
.statement()
28+
.andWhere(...BbsArticle.getWhereArguments("group", group))
29+
.andWhere(...BbsCategory.getWhereArguments("code", "NOT IN", exclude))
30+
.select([
31+
BbsArticle.getColumn("id"),
32+
BbsGroup.getColumn("name", "group"),
33+
BbsCategory.getColumn("name", "category"),
34+
BbsArticle.getColumn("writer"),
35+
BbsArticleContent.getColumn("title"),
36+
BbsArticle.getColumn("created_at"),
37+
BbsArticleContent.getColumn("created_at", "updated_at"),
38+
39+
BbsArticle.getColumn("AA.writer", "answer_writer"),
40+
BbsArticleContent.getColumn("AA.title", "answer_title"),
41+
BbsArticle.getColumn("AA.created_at", "answer_created_at"),
42+
])
43+
.orderBy(BbsArticleContent.getColumn("created_at", null), "DESC");
44+
}
+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import safe from "safe-typeorm";
2+
3+
import { BbsArticle } from "../models/bbs/BbsArticle";
4+
import { BbsArticleContent } from "../models/bbs/BbsArticleContent";
5+
import { BbsArticleTag } from "../models/bbs/BbsArticleTag";
6+
import { BbsCategory } from "../models/bbs/BbsCategory";
7+
import { BbsGroup } from "../models/bbs/BbsGroup";
8+
import { IBbsGroup } from "../structures/IBbsGroup";
9+
10+
export async function demo_app_join_builder(
11+
groups: BbsGroup[],
12+
): Promise<IBbsGroup[]> {
13+
const builder = new safe.JsonSelectBuilder(BbsGroup, {
14+
articles: new safe.JsonSelectBuilder(BbsArticle, {
15+
group: safe.DEFAULT,
16+
category: new safe.JsonSelectBuilder(BbsCategory, {
17+
parent: "recursive" as const,
18+
}),
19+
tags: new safe.JsonSelectBuilder(
20+
BbsArticleTag,
21+
{},
22+
(tag) => tag.value, // OUTPUT CONVERSION BY MAPPING
23+
),
24+
contents: new safe.JsonSelectBuilder(BbsArticleContent, {
25+
files: "join" as const,
26+
}),
27+
}),
28+
});
29+
return builder.getMany(groups);
30+
}

src/test/features/test_app_join.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import safe from "../..";
1+
import safe from "safe-typeorm";
2+
23
import { Relationship } from "../../typings";
34
import { generate_random_clean_groups } from "../internal/generators/generate_random_clean_groups";
45
import { must_not_query_anything } from "../internal/procedures/must_not_query_anything";

src/test/features/test_app_join_builder_filter.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1+
import safe from "safe-typeorm";
12
import * as orm from "typeorm";
23

3-
import safe from "../..";
44
import { generate_random_clean_groups } from "../internal/generators/generate_random_clean_groups";
55
import { BbsArticle } from "../models/bbs/BbsArticle";
66
import { BbsGroup } from "../models/bbs/BbsGroup";

src/test/features/test_app_join_builder_initialize.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import safe from "../..";
1+
import safe from "safe-typeorm";
2+
23
import { generate_random_clean_groups } from "../internal/generators/generate_random_clean_groups";
34
import { iterate_bbs_group } from "../internal/iterators/iterate_bbs_group";
45
import { must_not_query_anything } from "../internal/procedures/must_not_query_anything";

src/test/features/test_create_app_join_builder.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import safe from "../..";
1+
import safe from "safe-typeorm";
2+
23
import { generate_random_bbs_review_articles as generate_random_reviews } from "../internal/generators/generate_random_bbs_review_articles";
34
import { iterate_bbs_review_article } from "../internal/iterators/iterate_bbs_review_article";
45
import { must_not_query_anything } from "../internal/procedures/must_not_query_anything";

src/test/features/test_external_app_join_builder.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import safe from "../..";
1+
import safe from "safe-typeorm";
2+
23
import { generate_random_external_db } from "../internal/generators/generate_random_external_db";
34
import { must_not_query_anything } from "../internal/procedures/must_not_query_anything";
45
import { BbsGroup } from "../models/bbs/BbsGroup";

src/test/features/test_external_insert_collection.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import safe from "../..";
1+
import safe from "safe-typeorm";
2+
23
import { collect_random_external_db } from "../internal/collectors/collect_random_external_db";
34
import { must_not_query_anything } from "../internal/procedures/must_not_query_anything";
45

src/test/features/test_external_relation_getter.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import safe from "../..";
1+
import safe from "safe-typeorm";
2+
23
import { collect_random_external_db } from "../internal/collectors/collect_random_external_db";
34
import { iterate_bbs_group } from "../internal/iterators/iterate_bbs_group";
45
import { BbsGroup } from "../models/bbs/BbsGroup";

src/test/features/test_join_query_builder_duplicated_join.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import safe from "../..";
1+
import safe from "safe-typeorm";
2+
23
import { generate_random_normal_bbs_group } from "../internal/generators/generate_random_normal_bbs_group";
34
import { BbsGroup } from "../models/bbs/BbsGroup";
45

src/test/features/test_join_query_builder_where.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import safe from "../..";
1+
import safe from "safe-typeorm";
2+
23
import { BbsGroup } from "../models/bbs/BbsGroup";
34
import { IBbsGroup } from "../structures/IBbsGroup";
45
import { test_json_select_builder } from "./test_json_select_builder";

src/test/features/test_json_select_builder.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1+
import safe from "safe-typeorm";
12
import { equal } from "tstl/ranges/algorithm";
23

3-
import safe from "../..";
44
import { ArrayUtil } from "../../utils/ArrayUtil";
55
import { generate_random_clean_groups } from "../internal/generators/generate_random_clean_groups";
66
import { must_not_query_anything } from "../internal/procedures/must_not_query_anything";

src/test/features/test_json_select_builder_filter.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1+
import safe from "safe-typeorm";
12
import * as orm from "typeorm";
23

3-
import safe from "../..";
44
import { generate_random_clean_groups } from "../internal/generators/generate_random_clean_groups";
55
import { BbsArticle } from "../models/bbs/BbsArticle";
66
import { BbsGroup } from "../models/bbs/BbsGroup";

src/test/features/test_recursive_app_join_builder_belongs_to.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1+
import safe from "safe-typeorm";
2+
13
import { IPointer } from "tstl/functional/IPointer";
24

3-
import safe from "../..";
45
import { generate_random_recursive_category } from "../internal/generators/generate_radom_recursive_category";
56
import { must_not_query_anything } from "../internal/procedures/must_not_query_anything";
67
import { BbsCategory } from "../models/bbs/BbsCategory";

src/test/features/test_recursive_app_join_builder_has_one_to_many.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import safe from "../..";
1+
import safe from "safe-typeorm";
2+
23
import { generate_random_recursive_category } from "../internal/generators/generate_radom_recursive_category";
34
import { must_not_query_anything } from "../internal/procedures/must_not_query_anything";
45
import { BbsCategory } from "../models/bbs/BbsCategory";

src/test/features/test_recursive_json_select_builder.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import safe from "../..";
1+
import safe from "safe-typeorm";
2+
23
import { BbsCategory } from "../models/bbs/BbsCategory";
34
import { test_recursive_app_join_builder_belongs_to } from "./test_recursive_app_join_builder_belongs_to";
45

src/test/features/test_safe_query_builder.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1+
import safe from "safe-typeorm";
12
import orm from "typeorm";
23

3-
import safe from "../..";
44
import { BbsArticle } from "../models/bbs/BbsArticle";
55
import { BbsArticleContent } from "../models/bbs/BbsArticleContent";
66
import { BbsCategory } from "../models/bbs/BbsCategory";

src/test/internal/collectors/collect_random_bbs_article.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1+
import safe from "safe-typeorm";
12
import { randint } from "tstl";
23

3-
import safe from "../../..";
44
import { ArrayUtil } from "../../../utils/ArrayUtil";
55
import { BbsArticle } from "../../models/bbs/BbsArticle";
66
import { BbsArticleContent } from "../../models/bbs/BbsArticleContent";

src/test/internal/collectors/collect_random_bbs_article_content.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1+
import safe from "safe-typeorm";
12
import { randint } from "tstl";
23

3-
import safe from "../../..";
44
import { ArrayUtil } from "../../../utils/ArrayUtil";
55
import { AttachmentFile } from "../../models/bbs/AttachmentFile";
66
import { BbsArticle } from "../../models/bbs/BbsArticle";

src/test/internal/collectors/collect_random_bbs_comment.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1+
import safe from "safe-typeorm";
12
import { randint } from "tstl/algorithm/random";
23

3-
import safe from "../../..";
44
import { ArrayUtil } from "../../../utils/ArrayUtil";
55
import { AttachmentFile } from "../../models/bbs/AttachmentFile";
66
import { BbsArticle } from "../../models/bbs/BbsArticle";

src/test/internal/collectors/collect_random_bbs_review_article.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import safe from "../../..";
1+
import safe from "safe-typeorm";
2+
23
import { BbsArticle } from "../../models/bbs/BbsArticle";
34
import { BbsReviewArticle } from "../../models/bbs/BbsReviewArticle";
45
import { BbsReviewArticleContent } from "../../models/bbs/BbsReviewArticleContent";

src/test/internal/collectors/collect_random_external_db.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import safe from "../../..";
1+
import safe from "safe-typeorm";
2+
23
import { ArrayUtil } from "../../../utils/ArrayUtil";
34
import { BbsArticle } from "../../models/bbs/BbsArticle";
45
import { BbsGroup } from "../../models/bbs/BbsGroup";

src/test/internal/collectors/collect_random_hierarchical_category.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import safe from "../../..";
1+
import safe from "safe-typeorm";
2+
23
import { ArrayUtil } from "../../../utils/ArrayUtil";
34
import { BbsCategory } from "../../models/bbs/BbsCategory";
45
import { RandomGenerator } from "../procedures/RandomGenerator";

0 commit comments

Comments
 (0)