|
1054 | 1054 |
|
1055 | 1055 |
|
1056 | 1056 | #define ChangesetBuilder_add_delete_DOC "ChangesetBuilder.add_delete(table: str, indirect: bool, row: SQLiteValues) -> None\n\n" \ |
1057 | | -"Adds an ``delete`` change row.\n" \ |
| 1057 | +"Adds an ``delete`` change row. You must have called :meth:`schema` first so\n" \ |
| 1058 | +" the table can be verified.\n" \ |
1058 | 1059 | "\n" \ |
1059 | 1060 | ".. seealso::\n" \ |
1060 | 1061 | "\n" \ |
1061 | 1062 | " * :meth:`add_insert`\n" \ |
1062 | 1063 | " * :meth:`add_update`\n" \ |
1063 | 1064 | "\n" \ |
1064 | 1065 | "\n" \ |
1065 | | -" Calls: `sqlite3changegroup_change_begin <https://sqlite.org/session/sqlite3changegroup_change_begin.html>`__\n" |
| 1066 | +" Calls: `sqlite3changegroup_change_begin <https://sqlite.org/session/sqlite3changegroup_change_begin.html>`__\n" \ |
| 1067 | +" Calls: `sqlite3changegroup_change_finish <https://sqlite.org/session/sqlite3changegroup_change_finish.html>`__\n" |
| 1068 | + |
| 1069 | +#define ChangesetBuilder_add_delete_KWNAMES "table", "indirect", "row" |
| 1070 | +#define ChangesetBuilder_add_delete_USAGE "ChangesetBuilder.add_delete(table: str, indirect: bool, row: SQLiteValues) -> None" |
| 1071 | + |
| 1072 | +#define ChangesetBuilder_add_delete_CHECK do { \ |
| 1073 | + assert(__builtin_types_compatible_p(typeof(table), const char *)); \ |
| 1074 | + assert(__builtin_types_compatible_p(typeof(indirect), int)); \ |
| 1075 | + assert(__builtin_types_compatible_p(typeof(row), PyObject *)); \ |
| 1076 | +} while(0) |
| 1077 | + |
1066 | 1078 |
|
1067 | 1079 | #define ChangesetBuilder_add_insert_DOC "ChangesetBuilder.add_insert(table: str, indirect: bool, row: SQLiteValues) -> None\n\n" \ |
1068 | | -"Adds an ``insert`` change row.\n" \ |
| 1080 | +"Adds an ``insert`` change row. You must have called :meth:`schema` first so\n" \ |
| 1081 | +"the table can be verified.\n" \ |
1069 | 1082 | "\n" \ |
1070 | 1083 | ".. seealso::\n" \ |
1071 | 1084 | "\n" \ |
1072 | 1085 | " * :meth:`add_delete`\n" \ |
1073 | 1086 | " * :meth:`add_update`\n" \ |
1074 | 1087 | "\n" \ |
1075 | | -"Calls: `sqlite3changegroup_change_begin <https://sqlite.org/session/sqlite3changegroup_change_begin.html>`__\n" |
| 1088 | +"Calls: `sqlite3changegroup_change_begin <https://sqlite.org/session/sqlite3changegroup_change_begin.html>`__\n" \ |
| 1089 | +"Calls: `sqlite3changegroup_change_finish <https://sqlite.org/session/sqlite3changegroup_change_finish.html>`__\n" |
1076 | 1090 |
|
1077 | 1091 | #define ChangesetBuilder_add_insert_KWNAMES "table", "indirect", "row" |
1078 | 1092 | #define ChangesetBuilder_add_insert_USAGE "ChangesetBuilder.add_insert(table: str, indirect: bool, row: SQLiteValues) -> None" |
|
1085 | 1099 |
|
1086 | 1100 |
|
1087 | 1101 | #define ChangesetBuilder_add_update_DOC "ChangesetBuilder.add_update(table: str, indirect: bool, old: SQLiteValues, new: SQLiteValues) -> None\n\n" \ |
1088 | | -"Adds an ``update`` change giving old and new rows.\n" \ |
| 1102 | +"Adds an ``update`` change giving old and new rows. You must have called :meth:`schema` first so\n" \ |
| 1103 | +"the table can be verified.\n" \ |
| 1104 | +"\n" \ |
| 1105 | +"See `sqlite3changegroup_change_finish <https://sqlite.org/session/sqlite3changegroup_change_finish.html>`__\n" \ |
| 1106 | +"for details on which columns of old and new you must provide values for. Where no value should be\n" \ |
| 1107 | +"provided, use :attr:`apsw.no_change`.\n" \ |
1089 | 1108 | "\n" \ |
1090 | 1109 | ".. seealso::\n" \ |
1091 | 1110 | "\n" \ |
1092 | 1111 | " * :meth:`add_insert`\n" \ |
1093 | 1112 | " * :meth:`add_delete`\n" \ |
1094 | 1113 | "\n" \ |
1095 | | -"Calls: `sqlite3changegroup_change_begin <https://sqlite.org/session/sqlite3changegroup_change_begin.html>`__\n" |
| 1114 | +"Calls: `sqlite3changegroup_change_begin <https://sqlite.org/session/sqlite3changegroup_change_begin.html>`__\n" \ |
| 1115 | +"Calls: `sqlite3changegroup_change_finish <https://sqlite.org/session/sqlite3changegroup_change_finish.html>`__\n" |
| 1116 | + |
| 1117 | +#define ChangesetBuilder_add_update_KWNAMES "table", "indirect", "old", "new" |
| 1118 | +#define ChangesetBuilder_add_update_USAGE "ChangesetBuilder.add_update(table: str, indirect: bool, old: SQLiteValues, new: SQLiteValues) -> None" |
| 1119 | + |
| 1120 | +#define ChangesetBuilder_add_update_CHECK do { \ |
| 1121 | + assert(__builtin_types_compatible_p(typeof(table), const char *)); \ |
| 1122 | + assert(__builtin_types_compatible_p(typeof(indirect), int)); \ |
| 1123 | + assert(__builtin_types_compatible_p(typeof(old), PyObject *)); \ |
| 1124 | + assert(__builtin_types_compatible_p(typeof(new), PyObject *)); \ |
| 1125 | +} while(0) |
| 1126 | + |
1096 | 1127 |
|
1097 | 1128 | #define ChangesetBuilder_class_DOC "This object wraps a `sqlite3_changegroup <https://sqlite.org/session/changegroup.html>`__\n" \ |
1098 | | -"letting you concatenate changesets and individual :class:`TableChange` into one larger\n" \ |
1099 | | -"changeset.\n" |
| 1129 | +"to build a changeset or patchset. The contents can come from:\n" \ |
| 1130 | +"\n" \ |
| 1131 | +"* Existing changesets\n" \ |
| 1132 | +"* Individual :class:`TableChange`\n" \ |
| 1133 | +"* :meth:`add_insert`, :meth:`add_update`, :meth:`add_delete`\n" |
1100 | 1134 |
|
1101 | 1135 | #define ChangesetBuilder_close_DOC "ChangesetBuilder.close() -> None\n\n" \ |
1102 | 1136 | "Releases the builder\n" \ |
|
0 commit comments