| 
									
										
										
										
											2016-08-10 14:53:33 +08:00
										 |  |  | #ifndef SEAF_DB_H
 | 
					
						
							|  |  |  | #define SEAF_DB_H
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | enum { | 
					
						
							|  |  |  |     SEAF_DB_TYPE_SQLITE, | 
					
						
							|  |  |  |     SEAF_DB_TYPE_MYSQL, | 
					
						
							|  |  |  |     SEAF_DB_TYPE_PGSQL, | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | typedef struct SeafDB SeafDB; | 
					
						
							| 
									
										
										
										
											2020-04-15 10:21:04 +08:00
										 |  |  | typedef struct SeafDB CcnetDB; | 
					
						
							| 
									
										
										
										
											2016-08-10 14:53:33 +08:00
										 |  |  | typedef struct SeafDBRow SeafDBRow; | 
					
						
							| 
									
										
										
										
											2020-04-15 10:21:04 +08:00
										 |  |  | typedef struct SeafDBRow CcnetDBRow; | 
					
						
							| 
									
										
										
										
											2016-08-10 14:53:33 +08:00
										 |  |  | typedef struct SeafDBTrans SeafDBTrans; | 
					
						
							| 
									
										
										
										
											2020-04-15 10:21:04 +08:00
										 |  |  | typedef struct SeafDBTrans CcnetDBTrans; | 
					
						
							| 
									
										
										
										
											2016-08-10 14:53:33 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | typedef gboolean (*SeafDBRowFunc) (SeafDBRow *, void *); | 
					
						
							| 
									
										
										
										
											2020-04-15 10:21:04 +08:00
										 |  |  | typedef gboolean (*CcnetDBRowFunc) (CcnetDBRow *, void *); | 
					
						
							| 
									
										
										
										
											2016-08-10 14:53:33 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | SeafDB * | 
					
						
							|  |  |  | seaf_db_new_mysql (const char *host, | 
					
						
							|  |  |  |                    int port, | 
					
						
							|  |  |  |                    const char *user,  | 
					
						
							|  |  |  |                    const char *passwd, | 
					
						
							|  |  |  |                    const char *db, | 
					
						
							|  |  |  |                    const char *unix_socket, | 
					
						
							|  |  |  |                    gboolean use_ssl, | 
					
						
							| 
									
										
										
										
											2023-04-23 14:39:40 +08:00
										 |  |  |                    gboolean skip_verify, | 
					
						
							|  |  |  |                    const char *ca_path, | 
					
						
							| 
									
										
										
										
											2016-08-10 14:53:33 +08:00
										 |  |  |                    const char *charset, | 
					
						
							|  |  |  |                    int max_connections); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-18 18:10:28 +08:00
										 |  |  | #if 0
 | 
					
						
							| 
									
										
										
										
											2016-08-10 14:53:33 +08:00
										 |  |  | SeafDB * | 
					
						
							|  |  |  | seaf_db_new_pgsql (const char *host, | 
					
						
							| 
									
										
										
										
											2017-01-16 15:56:51 +08:00
										 |  |  |                    unsigned int port, | 
					
						
							| 
									
										
										
										
											2016-08-10 14:53:33 +08:00
										 |  |  |                    const char *user, | 
					
						
							|  |  |  |                    const char *passwd, | 
					
						
							|  |  |  |                    const char *db_name, | 
					
						
							| 
									
										
										
										
											2016-08-20 14:58:51 +08:00
										 |  |  |                    const char *unix_socket, | 
					
						
							|  |  |  |                    int max_connections); | 
					
						
							| 
									
										
										
										
											2019-06-18 18:10:28 +08:00
										 |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2016-08-10 14:53:33 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | SeafDB * | 
					
						
							|  |  |  | seaf_db_new_sqlite (const char *db_path, int max_connections); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int | 
					
						
							|  |  |  | seaf_db_type (SeafDB *db); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int | 
					
						
							|  |  |  | seaf_db_query (SeafDB *db, const char *sql); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | gboolean | 
					
						
							|  |  |  | seaf_db_check_for_existence (SeafDB *db, const char *sql, gboolean *db_err); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int | 
					
						
							|  |  |  | seaf_db_foreach_selected_row (SeafDB *db, const char *sql,  | 
					
						
							|  |  |  |                               SeafDBRowFunc callback, void *data); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const char * | 
					
						
							|  |  |  | seaf_db_row_get_column_text (SeafDBRow *row, guint32 idx); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int | 
					
						
							|  |  |  | seaf_db_row_get_column_int (SeafDBRow *row, guint32 idx); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | gint64 | 
					
						
							|  |  |  | seaf_db_row_get_column_int64 (SeafDBRow *row, guint32 idx); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int | 
					
						
							|  |  |  | seaf_db_get_int (SeafDB *db, const char *sql); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | gint64 | 
					
						
							|  |  |  | seaf_db_get_int64 (SeafDB *db, const char *sql); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | char * | 
					
						
							|  |  |  | seaf_db_get_string (SeafDB *db, const char *sql); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* Transaction related */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | SeafDBTrans * | 
					
						
							|  |  |  | seaf_db_begin_transaction (SeafDB *db); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void | 
					
						
							|  |  |  | seaf_db_trans_close (SeafDBTrans *trans); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int | 
					
						
							|  |  |  | seaf_db_commit (SeafDBTrans *trans); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int | 
					
						
							|  |  |  | seaf_db_rollback (SeafDBTrans *trans); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int | 
					
						
							|  |  |  | seaf_db_trans_query (SeafDBTrans *trans, const char *sql, int n, ...); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | gboolean | 
					
						
							|  |  |  | seaf_db_trans_check_for_existence (SeafDBTrans *trans, | 
					
						
							|  |  |  |                                    const char *sql, | 
					
						
							|  |  |  |                                    gboolean *db_err, | 
					
						
							|  |  |  |                                    int n, ...); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int | 
					
						
							|  |  |  | seaf_db_trans_foreach_selected_row (SeafDBTrans *trans, const char *sql, | 
					
						
							|  |  |  |                                     SeafDBRowFunc callback, void *data, | 
					
						
							|  |  |  |                                     int n, ...); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-01-07 10:25:19 +08:00
										 |  |  | int | 
					
						
							|  |  |  | seaf_db_row_get_column_count (SeafDBRow *row); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-10 14:53:33 +08:00
										 |  |  | /* Prepared Statements */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int | 
					
						
							|  |  |  | seaf_db_statement_query (SeafDB *db, const char *sql, int n, ...); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | gboolean | 
					
						
							|  |  |  | seaf_db_statement_exists (SeafDB *db, const char *sql, gboolean *db_err, int n, ...); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int | 
					
						
							|  |  |  | seaf_db_statement_foreach_row (SeafDB *db, const char *sql, | 
					
						
							|  |  |  |                                 SeafDBRowFunc callback, void *data, | 
					
						
							|  |  |  |                                 int n, ...); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int | 
					
						
							|  |  |  | seaf_db_statement_get_int (SeafDB *db, const char *sql, int n, ...); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | gint64 | 
					
						
							|  |  |  | seaf_db_statement_get_int64 (SeafDB *db, const char *sql, int n, ...); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | char * | 
					
						
							|  |  |  | seaf_db_statement_get_string (SeafDB *db, const char *sql, int n, ...); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #endif
 |