Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 7 additions & 3 deletions lib/sql/models/sql_table.p
Original file line number Diff line number Diff line change
Expand Up @@ -348,6 +348,7 @@ pfClass
## aSQLOptions.selectOptions — модификатор после select (distinct, sql_no_cache и т.п.)
## aSQLOptions.skipFields — пропустить поля
## aSQLOptions.force — отменить кеширование результата запроса
## aSQLOptions.withSkippedFields(false) — игнорировать опцию skipOnSelect у полей
## + Все опции pfSQL.
^self.cleanMethodArgument[aOptions;aSQLOptions]
$lResultType[^if(def $aOptions.asHashOn){table}{^self.__getResultType[$aOptions]}]
Expand Down Expand Up @@ -572,9 +573,12 @@ pfClass

@_allFields[aOptions;aSQLOptions]
^self.cleanMethodArgument[aOptions;aSQLOptions]
$lSkipFields[^hash::create[$self._skipOnSelect]]
^if(^aSQLOptions.contains[skipFields]){
^lSkipFields.add[$aSQLOptions.skipFields]

^if(!^aSQLOptions.withSkippedFields.bool(false)){
$lSkipFields[^hash::create[$self._skipOnSelect]]
^if(^aSQLOptions.contains[skipFields]){
^lSkipFields.add[$aSQLOptions.skipFields]
}
}

$lFields[$self._fields]
Expand Down
77 changes: 77 additions & 0 deletions ut/sql/sql_table/orm_test.p
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ BaseTestSQLConnection
$.IsAdmin($i == 1)
$.createdAt[$self.testTime1]
$.updatedAt[$self.testTime2]
$._hiddenField[hidden $i]
]
}

Expand Down Expand Up @@ -411,6 +412,76 @@ t1,50,10}[$.separator[,]]

^self.assertEq[^lRes.foreach[;v]{$v.userID}[,]][5,15,25,35,45]

@testSQLOptions_withSkippedFields_one[]
^self._createTestUsers(50)

$lRes[^self.sut.one[
$.userID[1]
][
$.withSkippedFields(true)
]]

^self.assertHashEquals[$lRes.fields;
$.userID[1]
$.login[user_49]
$.name[name]
$.job[job 1]
$.passwordHash[password hash 1]
$.isAdmin[0]
$.isActive[1]
$.createdAt[2022-07-03 14:52:18]
$.updatedAt[2022-07-04 22:04:18]
$._hiddenField[hidden 1]
]

@testSQLOptions_withSkippedFields_all[]
^self._createTestUsers(50)

$lRes[^self.sut.all[
$.userID[1]
$.asTable(true)
][
$.withSkippedFields(true)
]]

^self.assertHashEquals[$lRes.fields;
$.userID[1]
$.login[user_49]
$.name[name]
$.job[job 1]
$.passwordHash[password hash 1]
$.isAdmin[0]
$.isActive[1]
$.createdAt[2022-07-03 14:52:18]
$.updatedAt[2022-07-04 22:04:18]
$._hiddenField[hidden 1]
]

@testSQLOptions_withSkippedFields_aggregate[]
^self._createTestUsers(50)

$lRes[^self.sut.aggregate[
_fields(*)
][
$.userID[1]
$.asTable(true)
][
$.withSkippedFields(true)
]]

^self.assertHashEquals[$lRes.fields;
$.userID[1]
$.login[user_49]
$.name[name]
$.job[job 1]
$.passwordHash[password hash 1]
$.isAdmin[0]
$.isActive[1]
$.createdAt[2022-07-03 14:52:18]
$.updatedAt[2022-07-04 22:04:18]
$._hiddenField[hidden 1]
]

#----------------------------------------------------------------------------------------------------------------------

@CLASS
Expand All @@ -432,6 +503,8 @@ pfSQLTable
$.isActive[$.dbField[is_active] $.processor[bool] $.default(true) $.widget[none] $.groups[full, base]]
$.createdAt[$.dbField[created_at] $.processor[auto_now] $.skipOnUpdate(true) $.widget[none] $.groups[ext]]
$.updatedAt[$.dbField[updated_at] $.processor[auto_now] $.widget[none] $.groups[ext]]

$._hiddenField[$.dbField[_hidden_field] $.skipOnSelect(true)]
]

$self._defaultOrderBy[$.userID[asc]]
Expand Down Expand Up @@ -460,6 +533,7 @@ ORMPFSQLTableTests
is_active smallint DEFAULT 1 NOT NULL,
created_at datetime,
updated_at datetime,
_hidden_field text,
UNIQUE(login)
)
}
Expand Down Expand Up @@ -489,6 +563,7 @@ ORMPFSQLTableTests
is_active smallint DEFAULT 1 NOT NULL,
created_at datetime,
updated_at datetime,
_hidden_field text,
UNIQUE(login)
)
}
Expand Down Expand Up @@ -518,6 +593,7 @@ ORMPFSQLTableTests
is_active smallint DEFAULT 1 NOT NULL,
created_at datetime,
updated_at datetime,
_hidden_field text,
UNIQUE(login)
)
}
Expand Down Expand Up @@ -545,6 +621,7 @@ ORMPFSQLTableTests
password_hash character varying(250) DEFAULT NULL::character varying,
is_admin smallint DEFAULT 0 NOT NULL,
is_active smallint DEFAULT 1 NOT NULL,
_hidden_field text,
created_at timestamp without time zone,
updated_at timestamp without time zone
)
Expand Down