70 Commits

Author SHA1 Message Date
Delyan Angelov
a80bc23314
tools: cleanup entries from the hardcoded skip_files list in common.v (used by v test, v test-self etc); use the new // vtest build: syntax to mark the tests instead (#23918) 2025-03-13 19:51:51 +02:00
yuyi
c51d30bf53
fmt: fix alignment of struct init fields (#22025) 2024-08-11 09:11:24 +03:00
yuyi
ddb6685d8a
fmt: fix and simplify align of struct fields (#21995) 2024-08-05 20:23:39 +03:00
Felipe Pena
769e9147c3
v: change old attr syntax mention to new one in comments too (#21860) 2024-07-14 09:39:37 +03:00
Turiiya
1363cc85fd
time: update unix time acces, fix issues related to deviating unix times (#21293) 2024-04-17 00:33:37 +03:00
Delyan Angelov
033d72093a
ci: mark all orm tests as flaky (mainly to reduce the false positives on windows+MSVC, due to 'cannot open file' sqlite3.obj, when it is rebuilt in parallel) 2023-12-12 12:11:19 +02:00
Alexander Medvednikov
f09826e928 all: unwrap const() blocks 2023-11-25 10:02:51 +03:00
Joe C
757929392e
all: update attributes to use new syntax 2023-11-15 16:16:01 +11:00
Tim Marston
756075380b
orm: add null handling and option fields (#19379)
* orm: added is none and !is none handling

* orm: added NullType, support option fields and deprecate [nonull]

Nullable DB fields are now determined by corresponding option struct field.  The
[nonull] attribute is deprecated and fields are all NOT NULL now, unless they
are option fields. New orm primitive, NullType, added to support passing none
values to db backends, which have been updated to support it.  Also, empty
string and 0 numberic values are no longer skipped during insert (since they may
be valid values).

* orm: fix [nonull] deprecation warning

* orm: add null handling to update and select

also, improved formatting for orm cgen, and removed optimised operand handling
of orm `is` and `!is` operators

* sqlite: read/report NULLs using new orm NullType

* postgres: returning data primitives now returns new orm.NullType

* orm: initialise NullType Primitives properly

* orm: do not smart cast operands inside sql

* orm: fix bad setting of option value

* orm: improve orm_null_test.v, adding/fixing selects

* orm: cleanup: rename NullType->Null, use serial const, cgen output

* orm: handle automatically generated fields more explicitly

During insert, fields which are
* [sql: serial]
* [default: whatever]
and where the data is a default value (e.g., 0, ""), those fields are not sent
to the db, so that the db can generate auto-increment or default values.  (This
was previously done only for [primary] fields, and not in all circumstances, but
that is not correct -- primary and serial/auto-increment fields are differnet.)

* orm: udpated README

* orm: select cgen fixes: read from uninit res; fail to init res

* orm: udpated tests

* orm: fix option sub-struct fields

* orm: fixed joins to option structs

Changed orm.write_orm_select() so that you pass to it the name of a resut
variable which it populates with the result (or not) and changed use of it in
sql_select_expr() and calls in write_orm_select() to populate substructs.

* orm: fix pg driver handling of NULL results

* orm: move runtime checks to comptime checker; cache checked tables

* orm: vfmt :(

* orm: markdown formatting

* orm: renamed orm.time_ and orm.enum_; updated db drivers

* checker: updated orm tests

* orm: fix issue setting up ast option values as orm primitives

* checker: ORM use of none/options and operations (added tests)

* orm: fixed tests

* db: clean code

* examples: remove orm nonull attributes

* orm: skip test memory santisation for orm_null_test.v

* orm: make the type-to-primitive converstion fns not public

* orm: mv object var c-code from checker->cgen; fix memory corruption

Code in checker/orm.v used the SqlStmtLine object field name to store c-specific
referenecs to option and array fields (for arrays of children).  I moved this
logic to cgen.  And fixed an issue introduced with option fields, where an array
of children was unpacked into a non-array result which could corrupt memory.

* orm: fixed vast error

* orm: skip 2 tests on ubuntu-musl which require sqlite3.h

* cgen: prevent casting a struct (string)

* v fmt orm_fkey_attribute.vv, orm_multidim_array.vv, orm_table_attributes.vv; run `VAUTOFIX=1 ./v vlib/v/compiler_errors_test.v`
2023-10-05 19:09:03 +03:00
Daniel Daudysh
f0fb86f76e
checker,orm: skip compile-time error msg for fields tagged with [skip] and [sql: '-'] (#18700) 2023-06-29 06:43:24 +03:00
Delyan Angelov
5631e2f01d
ci,cgen,orm: fix CI failures after 9f118ba 2023-05-02 21:29:58 +03:00
Alexander Medvednikov
9f118ba3f1 orm: skip via the "-" attribute 2023-05-02 17:00:54 +02:00
walking devel
8452644ec3
orm: enforce that queries always return a Result, a query-resulting array can be used as a V array in place. (#17871) 2023-04-04 08:23:06 +03:00
walking devel
d0e78b1da6
parser: breaking change, let V ORM queries return arrays for *all* non-count queries, including limit = 1 (#17719) 2023-03-22 09:48:01 +02:00
walking devel
5d4c9dc9fc
checker: allow using struct field as ORM limit and offset. (#17330) 2023-02-15 19:47:35 +02:00
walking devel
d563739264
checker: add type checking for ORM limit, offset, and order by. (#17095) 2023-01-31 10:22:02 +02:00
walking devel
2fb9bdce9a
cgen, checker: add panic in ORM for invalid queries, when there are no or {} blocks, add type checking for the fkey attribute, add tests (#16977) 2023-01-17 20:21:10 +02:00
yuyi
64558df764
vlib: move the mysql/sqlite/pg/mssql modules under vlib/db (#16820) 2023-01-13 17:02:32 +02:00
yuyi
017ace6ea7
vfmt: change all '$expr' to '${expr}' (#16428) 2022-11-15 16:53:13 +03:00
Louis Schmieder
f249feb9da
orm: support parenthesized expressions as in select from User where (name == 'Sam' && is_customer == true) || id == 1 (#15693) 2022-09-09 21:08:48 +03:00
Louis Schmieder
5df3d8ac75
orm: mysql fixes (#14772) 2022-06-16 20:19:49 +03:00
Louis Schmieder
a83ac948a0
orm: document & fix pg (#14533) 2022-05-26 22:53:09 +03:00
Alexander Medvednikov
36ec47cd20 all: replace "NB:" with "Note:" (docs/comments) 2022-03-06 20:01:22 +03:00
Louis Schmieder
d33f7d12f7
orm: fix time struct in sql stmt (#12298) 2021-10-28 22:31:41 +03:00
Louis Schmieder
6391f3d2da
orm: fix other int types (#11981) 2021-09-26 11:17:56 +03:00
Louis Schmieder
a55ba08fad
orm: fix time (#11026) 2021-08-03 05:17:00 +03:00
Louis Schmieder
26db3b0995
orm: redesign orm (re-write it in V) (#10353) 2021-07-23 12:33:55 +03:00
Alexander Medvednikov
ed6ad728d9 vweb: fix serving static files 2021-05-16 04:28:14 +03:00
Louis Schmieder
faf2656335
orm: support multiline statements (#9888) 2021-04-27 15:28:57 +03:00
Louis Schmieder
dcf4a6b008
orm: add support for custom table names & custom field names (#9697) 2021-04-15 10:53:43 +03:00
Louis Schmieder
c37945e37f
orm: add != (#9600) 2021-04-08 02:13:25 +02:00
Louis Schmieder
ab03357a6e
orm: add table creation (#9621) 2021-04-07 15:27:02 +02:00
spaceface
b712af56fd
all: bring back panic(err.msg) -> panic(err) (#9022) 2021-03-01 00:18:14 +01:00
spaceface
d63b7bc35a
all: update repo to use the new error handling syntax (#8950) 2021-02-28 23:20:21 +03:00
Louis Schmieder
969f19daf4
orm: fix null strings (#8497) 2021-02-01 21:44:09 +01:00
Lukas Neubert
6969300f8a
test-cleancode: add vlib/orm (#7577) 2020-12-26 14:40:22 +02:00
Louis Schmieder
2a7a6fa1eb
orm: add delete stmt (#5725) 2020-07-07 16:55:32 +02:00
Delyan Angelov
3c432f5e07 orm: require order by instead of just order 2020-07-02 23:37:30 +03:00
Louis Schmieder
421b6d4a80
orm: fix offset when order is given too (#5625) 2020-07-02 23:22:52 +03:00
Louis Schmieder
b89cbf3224
orm: add support for ordering (#5624) 2020-07-02 20:29:22 +03:00
Delyan Angelov
8f1e8a9dde orm: cleanup test (put structs at top) 2020-06-28 22:10:49 +03:00
Alexander Medvednikov
190f970544 checker: handle limit and offset 2020-06-27 16:41:29 +02:00
Alexander Medvednikov
3672cfad0b orm: offset test 2020-06-27 16:25:25 +02:00
Alexander Medvednikov
f073ffa4ad orm: limit 2020-06-27 16:19:12 +02:00
Alexander Medvednikov
d52f1da7a2 orm: handle missing rows 2020-06-26 20:38:21 +02:00
Alexander Medvednikov
328cb7ed7e orm: update with selectors and other fixes 2020-06-25 22:23:19 +02:00
Alexander Medvednikov
450c6e843c orm: update with multiple fields 2020-06-25 17:18:44 +02:00
Alexander Medvednikov
b280e08ee0 orm: update cgen 2020-06-25 17:12:32 +02:00
Alexander Medvednikov
786be1d1c3 orm: move type logic to checker, so that sql queries can be used before type def 2020-06-25 12:05:24 +02:00
Alexander Medvednikov
9df29d0dd2 checker: do not allow {} for aliases; orm: update stmt 2020-06-24 16:35:18 +02:00