Skip to content
This repository was archived by the owner on Apr 21, 2026. It is now read-only.

Commit 75e9dcc

Browse files
authored
Merge pull request #298 from wheels-dev/fix/blog-issues
Fix silent ID corruption caused by ColdFusion float precision limits
2 parents a1478bb + 5294b06 commit 75e9dcc

5 files changed

Lines changed: 31 additions & 31 deletions

File tree

app/controllers/web/BlogController.cfc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -507,12 +507,12 @@ component extends="app.Controllers.Controller" {
507507
categories = getCategoriesByBlogid(blog.id);
508508
attachments = getAttachmentsByBlogid(blog.id);
509509
comments = getAllCommentsByBlogid(blog.id);
510-
allBlogComments = model("Comment").findAll(include="User", where="isPublished = 1 AND blogid = #val(blog.id)#", order="commentParentId, createdAt", cache=5);
510+
allBlogComments = model("Comment").findAll(include="User", where="isPublished = 1 AND blogid = #blog.id#", order="commentParentId, createdAt", cache=5);
511511

512512
// Track reading history
513513
if (StructKeyExists(session, "userID")) {
514514
history = model("ReadingHistory").findOne(
515-
where="userId = #val(session.userID)# AND blogId = #val(blog.id)#",
515+
where="userId = #session.userID# AND blogId = #blog.id#",
516516
includeSoftDeletes=true
517517
);
518518
if (IsObject(history)) {
@@ -531,7 +531,7 @@ component extends="app.Controllers.Controller" {
531531

532532
// Check if bookmarked
533533
isBookmarked = model("Bookmark").exists(
534-
where="userId = #val(session.userID)# AND blogId = #val(blog.id)#"
534+
where="userId = #session.userID# AND blogId = #blog.id#"
535535
);
536536
} else {
537537
isBookmarked = false;

app/models/Blog.cfc

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,22 @@ component extends="app.Models.Model" {
22
function config(){
33
table("blog_posts");
44

5-
property(name="id", column="id", type="integer", required=true, primaryKey=true);
5+
property(name="id", column="id", dataType="string");
66

7-
property(name="title", column="title", type="string", required=true, default="", limit=255);
8-
property(name="content", column="content", type="text", required=true, default="");
9-
property(name="slug", column="slug", type="string", required=true, default="", limit=255);
10-
property(name="coverImagePath", column="cover_image_path", type="string", required=false, default="", limit=100);
11-
property(name="status", column="status", type="string", required=false, default="");
7+
property(name="title", column="title", dataType="string", defaultValue = "");
8+
property(name="content", column="content", dataType="text", defaultValue = "");
9+
property(name="slug", column="slug", dataType="string", defaultValue = "");
10+
property(name="coverImagePath", column="cover_image_path", dataType="string", defaultValue="");
11+
property(name="status", column="status", dataType="string", defaultValue = "");
1212

13-
property(name="isCommentClosed", column="is_comment_closed", type="boolean", required=true, default=false);
14-
property(name="isPublished", column="is_published", type="boolean", required=true, default=false);
13+
property(name="isCommentClosed", column="is_comment_closed", dataType="boolean", defaultValue=false);
14+
property(name="isPublished", column="is_published", dataType="boolean", defaultValue=false);
1515

16-
property(name="postCreatedDate", column="post_created_date", type="datetime", required=false);
17-
property(name="createdAt", column="createdat", type="datetime", required=false);
18-
property(name="updatedAt", column="updatedat", type="datetime", required=false);
19-
property(name="deletedAt", column="deletedat", type="datetime", required=false);
20-
property(name="publishedAt", column="published_at", type="datetime", required=false);
16+
property(name="postCreatedDate", column="post_created_date", dataType="datetime");
17+
property(name="createdAt", column="createdat", dataType="datetime");
18+
property(name="updatedAt", column="updatedat", dataType="datetime");
19+
property(name="deletedAt", column="deletedat", dataType="datetime");
20+
property(name="publishedAt", column="published_at", dataType="datetime");
2121

2222
property(
2323
name="postDate",
@@ -26,11 +26,11 @@ component extends="app.Models.Model" {
2626
);
2727

2828
// Defining the foreign key
29-
property(name="statusId", column="status_id", type="integer", required=true, foreignkey=true, references="PostStatus(id)");
30-
property(name="postTypeId", column="post_type_id", type="integer", required=true, foreignkey=true, references="PostType(id)");
31-
property(name="createdBy", column="created_by", type="integer", required=true, foreignkey=true, references="User(id)");
32-
property(name="updatedBy", column="updated_by", type="integer", required=false, foreignkey=true, references="User(id)");
33-
property(name="deletedBy", column="deleted_by", type="integer", required=false, foreignkey=true, references="User(id)");
29+
property(name="statusId", column="status_id", dataType="integer", foreignkey=true, references="PostStatus(id)");
30+
property(name="postTypeId", column="post_type_id", dataType="integer", foreignkey=true, references="PostType(id)");
31+
property(name="createdBy", column="created_by", dataType="integer", foreignkey=true, references="User(id)");
32+
property(name="updatedBy", column="updated_by", dataType="integer", foreignkey=true, references="User(id)");
33+
property(name="deletedBy", column="deleted_by", dataType="integer", foreignkey=true, references="User(id)");
3434

3535
// Define associations
3636
belongsTo(name="User", foreignKey="createdBy");

app/models/BlogCategory.cfc

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@ component extends="app.Models.Model" {
22
function config() {
33
table("blog_categories");
44

5-
property(name="id", column="id", type="integer", required=true, primarykey=true);
6-
property(name="categoryId", column="category_id", type="integer", required=false, default="");
7-
property(name="createdAt", column="createdat", type="datetime", required=false, default="");
8-
property(name="updatedAt", column="updatedat", type="datetime", required=false, default="");
9-
property(name="deletedAt", column="deletedat", type="datetime", required=false, default="");
5+
property(name="id", column="id", dataType="string");
6+
property(name="categoryId", column="category_id", dataType="integer", defaultValue = "");
7+
property(name="createdAt", column="createdat", dataType="datetime", defaultValue = "");
8+
property(name="updatedAt", column="updatedat", dataType="datetime", defaultValue = "");
9+
property(name="deletedAt", column="deletedat", dataType="datetime", defaultValue = "");
1010

11-
property(name="blogId", column="blog_id", type="integer", required=false);
11+
property(name="blogId", column="blog_id", dataType="integer");
1212

1313
// Associations
1414
belongsTo(name="Blog", foreignKey="blogId");

app/models/Bookmark.cfc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ component extends="app.Models.Model" {
22
function config() {
33
table("bookmarks");
44
// Properties
5-
property(name="userId", column="user_id", dataType="integer");
6-
property(name="blogId", column="blog_id", dataType="integer");
5+
property(name="userId", column="user_id", dataType="string");
6+
property(name="blogId", column="blog_id", dataType="string");
77

88
// Associations
99
belongsTo("User");

app/models/ReadingHistory.cfc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ component extends="app.Models.Model"{
22
function config() {
33
table("reading_histories");
44
// Properties
5-
property(name="userId", column="user_id", dataType="integer");
6-
property(name="blogId", column="blog_id", dataType="integer");
5+
property(name="userId", column="user_id", dataType="string");
6+
property(name="blogId", column="blog_id", dataType="string");
77
property(name="lastReadAt", column="last_read_at", dataType="datetime");
88
property(name="isCompleted", column="is_completed", dataType="boolean", defaultValue=false);
99

0 commit comments

Comments
 (0)